三元组顺序表表示的稀疏矩阵转置Ⅱ

题目

三元组顺序表表示的稀疏矩阵转置Ⅱ。设a和b为三元组顺序表变量,分别表示矩阵M和T。要求按照a中三元组的次序进行转置,并将转置后的三元组置入b中恰当的位置。

输入格式

输入第1行为矩阵行数m、列数n及非零元素个数t。
按行优先顺序依次输入t行,每行3个数,分别表示非零元素的行标、列标和值。

输出格式

按置入b中的顺序输出置入的位置下标,转置后的三元组行标、列标和值,数据之间用空格分隔,共t行。

输入样例

3 4 3
0 1 -5
1 0 1
2 2 2

输出样例

1 1 0 -5
0 0 1 1
2 2 2 2

代码

#include<bits/stdc++.h>
using namespace std;

const int N = 1e4 + 7;

struct Matrix
{
    int x, y;
    int val;
}a[N], b[N];

int main()
{
    int n, m, t, i, j;
    int cnt = 0;
    cin >> n >> m >> t;
    for (i = 0; i < t; i++)
        cin >> a[i].x >> a[i].y >> a[i].val;
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < t; j++)
        {
            if (a[j].y == i)
            {
                b[cnt].y = a[j].x;
                b[cnt].x = a[j].y;
                b[cnt].val = a[j].val;
                cnt++;
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < t; j++)
        {
            if (b[j].y == i)
                cout << j << " " << b[j].x << " " << b[j].y << " " << b[j].val << endl;
        }
    }
    return 0;
}
11-05 05:38