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 }

 

你可能感兴趣的:(数据)