题目描述

给出无向图G,边 (Ai,Bi)的权是Ci,判断下列性质是否成立:

对于任意圈C,其边权的异或和是0

输入输出格式

输入格式:

第1 行,1 个整数T,表示数据的组数。

每组数据第1 行,2 个整数 N,M,表示图G 点和边的数量。

M 行,每行3 个整数 Ai,Bi,Ci,

输出格式:

对每个数据输出一行,“Yes” 或者“No”

输入输出样例

输入样例#1:

2 3 3
1 2 1
2 3 2
3 1 3
1 1
1 1 1

输出样例#1:

Yes
No

说明

• 对于50% 的数据, N,M≤20

• 对于100% 的数据, 1 <= N,M <= 50 , 1 <= Ai,Bi <= N , 0 <= Ci < 2^16

思路解析

一看数据范围,决定暴力。
枚举每个点,然后dfs,如果回到这个点自己,就判断异或和是不是0
没了

code

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; const int MAXN = ;
const int MAXM = ; int n,m,T;
struct Edge {
int next;
int to,w;
} l[MAXM<<];
int head[MAXN],cnt=;
bool vis[MAXN],flag;
bool v[MAXM]; inline void add(int x,int y,int z) {
cnt++;
l[cnt].next = head[x];
l[cnt].to = y;
l[cnt].w = z;
head[x] = cnt;
return;
} inline void dfs(int x,int from,int sum,int syqAK) {
if(flag) return;
if(vis[x]) {
if(sum && x == syqAK) flag = true;
return;
}
vis[x] = true;
for(register int i = head[x];i;i = l[i].next) {
if(l[i].to == from || v[i]) continue;
v[i] = v[i ^ ] = true;
dfs(l[i].to,x,(sum xor l[i].w),syqAK);
}
} int main() {
scanf("%d",&T);
while(T--) {
scanf("%d%d",&n,&m);
int x,y,z;
for(int i = ;i <= m;i++) {
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
add(y,x,z);
}
for(int i = ;i <= n;i++) {
dfs(i,,,i);
memset(vis,,sizeof(vis));
memset(v,,sizeof(v));
} if(flag) printf("No\n");
else printf("Yes\n");
memset(head,,sizeof(head));
flag = ;
cnt = ;
}
return ;
}

  

[Luogu] P3907 圈的异或的更多相关文章

  1. 洛谷——P3907 圈的异或

    P3907 圈的异或 无向图$dfs$找环,并判断边权异或和是否为0 #include<iostream> #include<cstdio> #include<algor ...

  2. LUGOU P3907 圈的异或

    传送门 解题思路 其实就是找出所有的环判断,因为数据范围很小直接暴力做,注意要判断自环. 代码 #include<iostream> #include<cstdio> #inc ...

  3. Luogu P4551 最长异或路径

    题目链接 \(Click\) \(Here\) \(01Trie\)好题裸题. 取节点\(1\)为根节点,向下扫每一个点从根节点到它路径上的异或和,我们可以得到一个\(sumx[u]\). 现在路径异 ...

  4. LuoGu P2420 让我们异或吧

    其实......这就是个SB题,本来看到这个题,和树上路径有关 于是--我就欣喜地打了一个树剖上去,结果嘞,异或两遍等于没异或 所以这题和LCA屁关系都没有,所以这题就是个树上DFS!!!! 所以它为 ...

  5. Luogu P4551 最长异或路径 01trie

    做一个树上前缀异或和,然后把前缀和插到$01trie$里,然后再对每一个前缀异或和整个查一遍,在树上从高位向低位贪心,按位优先选择不同的,就能贪出最大的答案. #include<cstdio&g ...

  6. [luogu] P4551 最长异或路径(贪心)

    P4551 最长异或路径 题目描述 给定一棵\(n\)个点的带权树,结点下标从\(1\)开始到\(N\).寻找树中找两个结点,求最长的异或路径. 异或路径指的是指两个结点之间唯一路径上的所有边权的异或 ...

  7. Trie树(小)总结 By cellur925

    关于\(Trie\)树的详细介绍,还请移步这篇深度好文 基本操作 插入 void insert() { int p=0; int len=strlen(tmp+1); for(int i=1;i< ...

  8. 树链剖分好(du)题(liu)选做

    1.luogu P4315 月下"毛景树" 题目链接 前言: 这大概是本蒟蒻A掉的题里面码量最大的一道题了.我自认为码风比较紧凑,但还是写了175行. 从下午2点多调到晚上8点.中 ...

  9. [Luogu] 让我们异或吧

    https://www.luogu.org/problemnew/show/P2420 异或满足 A ^ B = B ^ A A ^ A = 0 0 ^ A = A #include <cstd ...

随机推荐

  1. 从es中提取全量数据的shell脚本

    [root@hadoop3 xiaole_chk_url]# sh looh.es.res.sh 100 200 1 % Total % Received % Xferd Average Speed ...

  2. ios10--拳皇动画

    /** 图片的两种加载方式: 1> imageNamed: a. 就算指向它的指针被销毁,该资源也不会被从内存中干掉, b. 放到Assets.xcassets的图片,默认就有缓存, c. 图片 ...

  3. JSP-Runoob:JSP 状态码

    ylbtech-JSP-Runoob:JSP 状态码 1.返回顶部 1. SP HTTP 状态码 HTTP请求与HTTP响应的格式相近,都有着如下结构: 以状态行+CRLF(回车换行)开始 零行或多行 ...

  4. bzoj2073

    状压dp 预处理每个状态的初始值,枚举子集就行了 #include<bits/stdc++.h> using namespace std; , inf = ; int W, n; < ...

  5. 特征变化--->标签到索引的转换(StringIndexer)

    package Spark_MLlib import org.apache.spark.ml.feature.StringIndexer import org.apache.spark.sql.Spa ...

  6. Android基础整理

     1.使用Debug方式调试程序 2.使用LogCat方式调试程序  3.使用Toast动态显示信息 4.使用AlertDialog实现提示框.. 5.使用OptionsMenu实现选项菜单

  7. 9.11NOIP模拟题

    NOIP模拟赛 by thmyl   题目名称 superman market Lemon_Soda 可执行文件名 superman market Lemon_Soda 输入文件 superman.i ...

  8. SPOJ 1811 SAM 初探

    思路: 一个串建SAM 另一个串在SAM上跑 //By SiriusRen #include <cstdio> #include <cstring> #include < ...

  9. ACM_Cipher(异或运算)

    Cipher Time Limit: 2000/1000ms (Java/Others) Problem Description: 只剩两个小时就要正式开始第一次月赛了,大四师兄决定还是来出一道,找点 ...

  10. vmware workstation 14 黑屏处理方法

    从12升级到14以后,所有老的虚拟系统全部黑屏.进行了一波操作,例如:虚拟机-管理-更改硬件兼容性,选择14.黑屏将加速3D图形勾选去掉:启动,关闭,再勾选上,启动.黑屏将显示器选择为指定监视器,黑屏 ...