ural 1129 (求数据)
先记下来。在test 7wa了。如果谁有数据希望可以指点下。thx.
1 // File Name: 1129.cpp 2 // Author: Missa 3 // Created Time: 2013/3/12 星期二 17:31:53 4 5 #include<iostream> 6 #include<cstdio> 7 #include<cstring> 8 #include<algorithm> 9 #include<cmath> 10 #include<queue> 11 #include<stack> 12 #include<string> 13 #include<vector> 14 #include<cstdlib> 15 #include<map> 16 #include<set> 17 using namespace std; 18 #define CL(x,v) memset(x,v,sizeof(x)); 19 #define R(i,st,en) for(int i=st;i<en;i++) 20 21 const int maxn = 1e2+5; 22 bool g[maxn][maxn]; 23 bool gr[maxn][maxn]; 24 int deg[maxn]; 25 char ans[maxn][maxn]; 26 int n; 27 void dfs(int x) 28 { 29 R(i,1,n+1) 30 { 31 if(g[x][i]) 32 { 33 g[x][i]=g[i][x]=0; 34 dfs(i); 35 ans[x][i]='G'; 36 ans[i][x]='Y'; 37 } 38 } 39 } 40 int main() 41 { 42 while(~scanf("%d",&n)) 43 { 44 CL(g,0); 45 CL(deg,0); 46 CL(ans,0); 47 CL(gr,0); 48 int x,v; 49 R(i,1,n+1) 50 { 51 scanf("%d",&x); 52 while(x--) 53 { 54 scanf("%d",&v); 55 if(g[i][v]) continue; 56 g[i][v]=g[v][i]=1; 57 gr[i][v]=gr[v][i]=1; 58 deg[i]++;deg[v]++; 59 } 60 } 61 vector<int>od; 62 od.clear(); 63 R(i,1,n+1) 64 { 65 if(deg[i]&1) 66 od.push_back(i); 67 } 68 R(i,0,od.size()) 69 { 70 int u=od[i]; 71 if(deg[u]&1==0) continue; 72 R(j,i+1,od.size()) 73 { 74 int v=od[j]; 75 if(deg[v]&1 && g[u][v]==0) 76 { 77 g[u][v]=g[v][u]=1; 78 deg[u]++; 79 deg[v]++; 80 break; 81 } 82 } 83 } 84 R(i,1,n+1) 85 if(deg[i]&1) 86 { 87 dfs(i); 88 break; 89 } 90 R(i,1,n+1) 91 { 92 bool flag=0; 93 R(j,1,n+1) 94 if(g[i][j]) 95 { 96 flag=1; 97 break; 98 } 99 if(flag) 100 dfs(i); 101 } 102 R(i,1,n+1) 103 { 104 R(j,1,n+1) 105 if(gr[i][j]) 106 printf("%c ",ans[i][j]); 107 printf("\n"); 108 } 109 } 110 return 0; 111 }