P3907 圈的异或

无向图$dfs$找环,并判断边权异或和是否为0

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring> #define N 100000
using namespace std; int head[N],tot;
struct node{
int to,next,w;
}e[N]; bool vis[N],bvis[N];
int t,n,m; void add(int u,int v,int w){
e[++tot].to=v,e[tot].next=head[u],head[u]=tot,e[tot].w=w;
} bool flg;
int orx[N]; bool dfs(int u,int fa,int w){
vis[u]=true,orx[u]=w;
for(int i=head[u];i;i=e[i].next){
int v=e[i].to;
if(v==fa) continue;
if(vis[v]){
if(orx[u]^orx[v]^e[i].w) return true;
continue;
}
if(dfs(v,u,w^e[i].w)) return true;
}
return false;
} int main()
{
scanf("%d",&t);
while(t--){
memset(vis,,sizeof(vis));
memset(bvis,,sizeof(bvis));
memset(head,,sizeof(head));
memset(e,,sizeof(e));
tot=;
scanf("%d%d",&n,&m);
for(int u,v,w,i=;i<=m;i++){
scanf("%d%d%d",&u,&v,&w);
add(u,v,w),add(v,u,w);
}
flg=false;
for(int i=;i<=n;i++){
if(!vis[i]&&!flg)
flg|=dfs(i,,);
}
if(flg) printf("No\n");
else printf("Yes\n");
} return ;
}

最新文章

  1. 对oracle数据库Blob字段的操作
  2. 将speedbutton放在toolbar上,flat设为true,并将speedbutton的width和height设得比较大,在speedbutton中间会出现一条竖线,如何消去?
  3. Linux操作系统PS命令详细解析
  4. mac 升级vim
  5. 【转】十分钟搞定pandas
  6. JMir——Java版热血传奇2之资源文件与地图
  7. Zygote(app_process)相关分析1
  8. ms-grid layout
  9. ARM学习笔记5——程序状态寄存器
  10. Android——在活动中使用Menu
  11. python学习笔记:python序列
  12. Windows Azure 成为业内首家被授权为 FedRAMP JAB P-ATO 的供应商
  13. Swift - 使用UI Dynamics给UIKit组件添加重力和碰撞行为
  14. 恭喜我开通了CSDN博客
  15. hadoop各个名词的理解
  16. Java基础学习笔记十六 集合框架(二)
  17. Web前端培训教程:CSS3动画怎么实现的
  18. Petrozavodsk Winter Camp, Day 8, 2014, Second Trip
  19. 2018-2019-2 20165312《网络攻防技术》Exp3 免杀原理与实践
  20. AtCoder Regular Contest 102 (ARC102) E - Stop. Otherwise... 排列组合

热门文章

  1. adb: command not found 解決方法(转载)
  2. 前缀和小结 By cellur925
  3. 原生javascript实现计时器
  4. 【原创】《从0开始学RocketMQ》—集群搭建
  5. php 打包下载
  6. 题解报告:hdu 2087 剪花布条(KMP入门)
  7. Activity的onSaveInstanceState和onRestoreInstanceState触发的时机
  8. 解决asp.net 以及MVC中上传文件大小限制的问题
  9. 在reset css后两个input之间还是出现默认间隔的问题。
  10. Java语法基础-序列化