(看题解,不计数)[Codeforces Round #163 (Div. 2)]C. Below the Diagonal
地址:http://codeforces.com/contest/266/problem/C
这题比赛时没做出来
这还是看了dys的题解才写出来......
1 #include<stdio.h> 2 3 int n,m[1000][2],result[10000][3]; 4 5 int main() 6 { 7 int i,j,count=0; 8 scanf("%d",&n); 9 for(i=0;i<n-1;i++) 10 { 11 scanf("%d %d",&m[i][0],&m[i][1]); 12 } 13 for(i=0;i<n-1;i++) 14 { 15 if(m[i][0]!=i+2) 16 { 17 for(j=i+1;j<n-1;j++) 18 { 19 if(m[j][0]==m[i][0]) m[j][0]=i+2; 20 else if(m[j][0]==i+2) m[j][0]=m[i][0]; 21 } 22 result[count][0]=1; 23 result[count][1]=m[i][0]; 24 result[count][2]=i+2; 25 m[i][0]=i+2; 26 count++; 27 } 28 if(m[i][1]>i+1) 29 { 30 for(j=i+1;j<n-1;j++) 31 { 32 if(m[j][1]==m[i][1]) m[j][1]=i+1; 33 else if(m[j][1]==i+1) m[j][1]=m[i][1]; 34 } 35 result[count][0]=2; 36 result[count][1]=m[i][1]; 37 result[count][2]=i+1; 38 m[i][1]=i+1; 39 count++; 40 } 41 } 42 printf("%d\n",count); 43 for(i=0;i<count;i++) 44 { 45 printf("%d %d %d\n",result[i][0],result[i][1],result[i][2]); 46 } 47 return 0; 48 }

浙公网安备 33010602011771号