B题。。。水题,记录当前行是由原矩阵哪行变来的。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #include<iostream> 5 #include<queue> 6 #include<stack> 7 #include<cmath> 8 #include<algorithm> 9 #include<malloc.h> 10 using namespace std; 11 #define clc(a,b) memset(a,b,sizeof(a)) 12 #define inf 0x3f3f3f3f 13 const int N=10010; 14 #define LL long long 15 const double eps = 1e-5; 16 const double pi = acos(-1); 17 int g[1010][1010]; 18 inline int r(){ 19 int x=0,f=1;char ch=getchar(); 20 while(ch>'9'||ch<'0'){if(ch=='-') f=-1;ch=getchar();} 21 while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} 22 return x*f; 23 } 24 25 int lx[1010],ly[1010]; 26 27 int main(){ 28 int T; 29 // scanf("%d",&T); 30 T=r(); 31 while(T--){ 32 int n,m,q; 33 // scanf("%d%d%d",&n,&m,&q); 34 n=r(),m=r(),q=r(); 35 for(int i=1;i<=n;i++){ 36 for(int j=1;j<=m;j++){ 37 g[i][j]=r(); 38 } 39 } 40 for(int i=1;i<=n;i++) 41 lx[i]=i; 42 for(int j=1;j<=m;j++) 43 ly[j]=j; 44 while(q--){ 45 int a,x,y; 46 a=r(),x=r(),y=r(); 47 if(a==1){ 48 int a=lx[x];int b=lx[y]; 49 lx[x]=b,lx[y]=a; 50 } 51 else if(a==2){ 52 int a=ly[x];int b=ly[y]; 53 ly[x]=b,ly[y]=a; 54 } 55 else if(a==3){ 56 for(int i=1;i<=m;i++) 57 g[lx[x]][i]+=y; 58 } 59 else { 60 for(int i=1;i<=n;i++){ 61 g[i][ly[x]]+=y; 62 } 63 } 64 }for(int i=1;i<=n;i++){ 65 for(int j=1;j<=m;j++){ 66 if(j==1) 67 printf("%d",g[lx[i]][ly[j]]); 68 else printf(" %d",g[lx[i]][ly[j]]); 69 } 70 printf("\n"); 71 } 72 } 73 return 0; 74 }