首页 > 代码库 > hdu_5963_朋友(找规律)
hdu_5963_朋友(找规律)
题目链接:hdu_5963_朋友
题意:
中文,不解释
题解:
把样例拿出来看看,你会发现以x为节点是否能赢,就是与x相连的边权值的和或者异或是否为奇数。
1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;i++) 3 using namespace std; 4 typedef long long ll; 5 6 const int N=80007; 7 int t,n,m,g[N],nxt[N],v[N],w[N],ed; 8 9 void adg(int x,int y,int z){v[++ed]=y,w[ed]=z,nxt[ed]=g[x],g[x]=ed;} 10 11 int main() 12 { 13 scanf("%d",&t); 14 while(t--) 15 { 16 scanf("%d%d",&n,&m); 17 memset(g,0,sizeof(g)),ed=0; 18 F(i,1,n-1) 19 { 20 int x,y,z; 21 scanf("%d%d%d",&x,&y,&z); 22 adg(x,y,z),adg(y,x,z); 23 } 24 F(i,1,m) 25 { 26 int op; 27 scanf("%d",&op); 28 if(op) 29 { 30 int x,y,z; 31 scanf("%d%d%d",&x,&y,&z); 32 for(int i=g[x];i;i=nxt[i])if(v[i]==y){w[i]=z;break;} 33 for(int i=g[y];i;i=nxt[i])if(v[i]==x){w[i]=z;break;} 34 }else 35 { 36 int x; 37 scanf("%d",&x); 38 int ans=0; 39 for(int i=g[x];i;i=nxt[i])ans^=w[i]; 40 if(ans&1)puts("Girls win!"); 41 else puts("Boys win!"); 42 } 43 } 44 } 45 return 0; 46 }
hdu_5963_朋友(找规律)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。