void TransposeSMatrix(TSMtrix M,TSMtrix &T)//三元组顺序表
{
M.mu = T.nu,M.nu = T.mu,T.tu = M.tu;
int q = 1;
for(int col = 1;col <= M.nu;col++)
for(int p = 1;p <= M.mu; p++)
{
if(M.data[p].j == col)
{
T.data[q].i = M.data[p].j;
T.data[q].j = M.data[p].i;
T.data[q].e = M.data[p].e;
q++;
}
}
return;
}
#include<bits/stdc++.h>
using namespace std;
#define MAX 1001
#define OK 1
#define ERROR 0
#define TURE 1
#define FALSE 0
typedef struct
{
int i, j;
int e;
}Trimple;
typedef struct
{
Trimple data[MAX];
int mu,nu,tu;
}TSMatrix;
void FastTransposeSMatrix(TSMatrix M,TSMatrix &T)
{
T.mu = M.nu,T.nu = M.mu,T.tu = M.tu;
if(T.tu)
{
int col,q,num[MAX],cpot[MAX];
for(col = 1;col <= M.nu;col++)
num[col] = 0;
for(int i = 1;i <= M.tu;i++)
num[M.data[i].j]++;
cpot[1] = 1;
for(int i = 2;i <= M.tu;i++)
cpot[i] = cpot[i - 1] + num[i - 1];
for(int p = 1;p <= M.tu;p++)
{
col = M.data[p].j;
q = cpot[col];
T.data[p].i = M.data[q].j;
T.data[p].j = M.data[q].i;
T.data[p].e = M.data[q].e;
cpot[col]++;
}
}
return;
}
int main()
{
TSMatrix M;
TSMatrix T;
scanf("%d %d", &M.mu, &M.nu);
int x,y,z;
M.tu=0;
for (int i = 0; ; i++)
{
scanf("%d%d%d", &x, &y, &z);
if(x==0&&y==0&&z==0)break;
M.data[i].i=x;M.data[i].j=y;M.data[i].e=z;
M.tu++;
}
FastTransposeSMatrix(M, T);
for (int t = 0; t < T.tu; t++)
printf("%d %d %d\n", T.data[t].i, T.data[t].j, T.data[t].e);
system("pause");
}