Array of data structure experiment three: Quick transpose time limit:1000ms Memory limit:65536kbsubmit Statisticproblem Description
The transpose operation is one of the simplest matrix operations, for a m*n matrix m (1 = < M < = 10000,1 = < N < = 10000), its transpose matrix T is a n*m matrix, and T (i, J) =m (J, i). Obviously, the transpose of a sparse matrix is still a sparse matrix. Your task is to calculate the matrix and output it for the sparse matrix (m, n < = 10000) given a m*n. Matrix M and the transpose matrix T as shown in the example.
Sparse matrix M sparse matrix T
Input
Continuous input of multiple sets of data, the first row of each group of data is three integers mu, nu, tu (tu <= 50), representing the number of rows, columns, and matrices of the sparse matrix, respectively, the rows, column values, and non-0 elements of the non-0 elements of the sparse matrix. A space interval between the same row of data. (The matrix is the main order of the line order)
Output
The Ternary sequential table representation of the sparse matrix after the output transpose.
Example Input
3 5 51 2 141 5-52 2-73 1 363 4 28
Example Output
1 3 362 1 142 2-74 3 285 1-5
DQE: Fast transpose of the matrix, water.
1#include <iostream>2#include <cstdio>3 4 using namespacestd;5 6 structTS7 {8 struct{intI,j;inte;} data[10010];//100009 intNu,mu,tu;Ten }; One A voidZZ (TS F,ts &z) - { -z.tu=f.tu;z.nu=f.mu;z.mu=f.nu;//jscpy the intnum[10010]={0},cpot[10010]={1}; - inti; - for(i=1; i<=f.tu;i++) - { +num[f.data[i].j]++; - } +cpot[1]=1; A for(i=2; i<=z.nu;i++) at { -cpot[i]=cpot[i-1]+num[i-1]; - } - for(i=1; i<=z.tu;i++) - { - intZi=F.DATA[I].J; in intzn=Cpot[zi]; -Z.data[zn].e=f.data[i].e; toZ.data[zn].i=F.DATA[I].J; +z.data[zn].j=f.data[i].i; -cpot[zi]++; the } * } $ Panax Notoginseng intMain () - { the TS f,z; + while(SCANF (" %d%d%d", &f.nu,&f.mu,&f.tu)! =EOF) A { the inti; + for(i=1; i<=f.tu;i++)//inch - { $scanf" %d%d%d",&f.data[i].i,&f.data[i].j,&f.data[i].e); $ } - - ZZ (f,z); the - for(i=1; i<=z.tu;i++)// outWuyi { theprintf"%d%d%d\n", Z.DATA[I].I,Z.DATA[I].J,Z.DATA[I].E); - } Wu } - return 0; About } $ - /*************************************************** - User Name: * * * - result:accepted A Take time:0ms + Take memory:464kb the Submit time:2016-10-12 16:19:44 - ****************************************************/
Sdut 3347 Data Structure Experiment array three: Quick transpose