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