【HDU3094】A tree game 博弈,树形删边游戏
2015-01-12 22:41
225 查看
转载请注明出处:http://blog.csdn.net/vmurder/article/details/42653129
其实我就是觉得原创的访问量比未授权盗版多有点不爽233。。。
题意:给一颗树,每次可以删掉一条与节点1(root)的连通的边,两人轮流操作,谁不能操作谁输。
题解:
只能套公式:
Colon原理:SG(x)=XOR{SG(y)+1|y是x的子结点}。
好了。水了。
代码:
其实我就是觉得原创的访问量比未授权盗版多有点不爽233。。。
题意:给一颗树,每次可以删掉一条与节点1(root)的连通的边,两人轮流操作,谁不能操作谁输。
题解:
只能套公式:
Colon原理:SG(x)=XOR{SG(y)+1|y是x的子结点}。
好了。水了。
代码:
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define N 101000 using namespace std; struct KSD { int v,next; }e[N<<1]; int head ,cnt; inline void add(int u,int v) { e[++cnt].v=v; e[cnt].next=head[u]; head[u]=cnt; } int n; int sg ; void dfs(int x,int p) { int i,v; sg[x]=0; for(i=head[x];i;i=e[i].next) { v=e[i].v; if(v==p)continue; dfs(v,x); sg[x]^=(sg[v]+1); } } int main() { int i,j,T; int a,b; for(scanf("%d",&T);T--;) { cnt=1; memset(head,0,sizeof(head)); scanf("%d",&n); for(i=1;i<n;i++) { scanf("%d%d",&a,&b); add(a,b),add(b,a); } dfs(1,0); if(sg[1])puts("Alice"); else puts("Bob"); } return 0; }
相关文章推荐
- HDU3094_A Chess Game_树形删边博弈
- POJ2425 && HDU1524_ A Chess Game_树形博弈
- 【博弈】GameWithTree
- hdu 3094 A tree game (树形删边游戏)
- hdu 3094 A tree game (博弈 树的删边问题)
- hdu3094 A tree game
- Codeforces 280C Game on Tree 树形期望dp
- 【博弈】【SG函数】【HUST 1612】A new tree game
- HUSTOJ 1612 A new tree game(树删边博弈)
- EasyUI_tree根据数据库数据非迭代生成树形结构
- Codeforces Round #358 (Div. 2)-C. Alyona and the Tree(树形dp)
- Game! SDUT(环形博弈)
- [JAVASCRIPT][EXTJS]直接用JSON创建树形控件(Ext.tree.TreePanel )(转)
- kiki's game+hdu+简单巴什博弈
- 原有的树形添加一个TreeEditor,编辑的树
- poj 1848 Tree 树形dp
- easyUI 实现tree树形菜单json的处理
- tree 以树形格式罗列文件
- 8 个最好的 jQuery 树形 Tree 插件
- hdoj 1851 A Simple Game(组合博弈, sg函数)