PKU3710
2011-06-15 14:37
387 查看
/* 稍有难度的题目。sg游戏 树删边游戏。不过在树的基础上加入了环,这个环是一个特殊的环,每个环和树只有一个公共节点,没有公共边。而且存在重边。所以对于无向图的保存需要注意 这里除了记录下每个节点的连接边以外,还要记录每两个节点之间边的个数。 然后分析环的特性:没一个环最终都可以化简,奇数环可以化简为一条边,偶数环可以删去,详细可参见论文。 */ #include <cstdio> #include <vector> #include <cstring> using namespace std; int N; int M,K; vector<int> G[110]; int sg[110]; int ans[110]; bool used[110]; int Ismany[110][110]; void rang(int ct,int be,int f,int cnt,int &ans,int &last) { used[be] = 1; for(int i=G[be].size()-1;i>=0;i--) { if(Ismany[be][G[be][i]]==1) { if( G[be][i]==ct ) { last = be; ans = cnt+1;break; } if( !used[G[be][i]] ) { Ismany[be][G[be][i]]--; Ismany[G[be][i]][be]--; rang(ct,G[be][i],f,cnt+1,ans,last); Ismany[be][G[be][i]]++; Ismany[G[be][i]][be]++; } } } if(f) used[be] = 0; } int dfs(int x) { int& cur = sg[x]; if(cur!=-1) return cur; cur = 0; used[x] = 1; int cnt,ans,last; for(int i=G[x].size()-1;i>=0;i--) { if( !used[G[x][i]] ) { if( Ismany[x][G[x][i]]>1 ) { used[G[x][i]] = 1; continue; } ans = -1; cnt = 1; last = -1; Ismany[x][G[x][i]]--; Ismany[G[x][i]][x]--; rang(x,G[x][i],1,cnt,ans,last); Ismany[x][G[x][i]]++; Ismany[G[x][i]][x]++; if( ans!=-1 ) { if(ans&1) cur^=1; else cur^=0; } if(ans!=-1) { used[G[x][i]] = 1; used[last] = 1; } else { cur ^= (dfs(G[x][i])+1); } } } return cur; } int main() { int s,t; while(scanf("%d",&N)==1) { for(int i=0;i<N;i++) { scanf("%d %d",&M,&K); for(int j=1;j<=M;j++) G[j].clear(); memset(Ismany,0,sizeof(Ismany)); for(int j=0;j<K;j++) { scanf("%d %d",&s,&t); Ismany[s][t]++; Ismany[t][s]++; G[s].push_back(t); G[t].push_back(s); } // memset(sg,-1,sizeof(sg)); memset(used,0,sizeof(used)); ans[i] = dfs(1); //printf("sg: %d\n",ans[i]); } int win = 0; for(int i=0;i<N;i++) win ^= ans[i]; if(win) printf("Sally\n"); else printf("Harry\n"); } return 0; }
相关文章推荐
- pku 2186
- pku kmp题目小结
- pku ACM 1125
- pku 2389解题报告
- pku 1953 -- World Cup Noise (DP)
- PKU3020-Antenna Placement
- 无限种类并查集+离散化——pku1733(中上难度)
- 分数最佳接近——pku3039
- pku 3259
- pku2773 Happy 2006
- pku1611
- pku 1703,hdu 1027 、2062
- POJ 1006Biorhythms解题报告——生理周期——【PKU ACM】
- pku 3261
- istringstream。PKU2493 Rdeaalbe。
- 差分约束小结 pku3169 1275 1716 3159 1364
- 二分图的必须边——pku1486
- pku2110求一点至另一点的路径中高度差最小的值
- pku2228_Naptime
- PKU 2777 Count Color