题目描述

给出无向图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. LeetCode 234. Palindrome Linked List (回文链表)

    Given a singly linked list, determine if it is a palindrome. Follow up:Could you do it in O(n) time ...

  2. coffeescript遍历json对象

    直接给代码: headers = a:"this is a" ,b:"this is b" ,c:"this is c" exheaders ...

  3. oc70--NSArray1

    // // main.m // NSArray是不可变的,一旦初始化完毕,就不能添加和删除了.类似于NSString和NSMutilString. #import <Foundation/Fou ...

  4. ZOJ 2397:Tian Ji -- The Horse Racing

    Tian Ji -- The Horse Racing Time Limit: 5 Seconds      Memory Limit: 32768 KB Here is a famous story ...

  5. P3694 邦邦的大合唱站队/签到题(状压dp)

    P3694 邦邦的大合唱站队/签到题 题目背景 BanG Dream!里的所有偶像乐队要一起大合唱,不过在排队上出了一些问题. 题目描述 N个偶像排成一列,他们来自M个不同的乐队.每个团队至少有一个偶 ...

  6. CF1073C Vasya and Robot

    CF题目难度普遍偏高啊-- 一个乱搞的做法.因为代价为最大下标减去最小的下标,那么可以看做一个区间的修改.我们枚举选取的区间的右端点,不难发现满足条件的左端点必然是不降的.那么用一个指针移一下就好了 ...

  7. $CF1141A Game 23$

    这题很简单啊 可以用\(DFS\)来打 毕竟是 \(2^x*3^y=m 输出x+y啊\) 这是最简单的做法 #include <bits/stdc++.h> using namespace ...

  8. JavaScript--关闭窗口(window.close)

    close()关闭窗口 用法: window.close(); //关闭本窗口 或 <窗口对象>.close(); //关闭指定的窗口 例如:关闭新建的窗口. <script typ ...

  9. 12 C#中的方法

    还记得我们的第一个程序吗?忘记了?那你要努力了.我们的第一个程序是就是往dos窗口输出一些字符串.在哪个程序中只有一个方法,Main方法.Main方法是一个特殊的方法,但是它也是一个方法.为什么说Ma ...

  10. 11 在C#中写文件

    在这个练习中,我们来学习如何把我们想要的东西写到文件中.我们在这个练习中还是使用File类中的方法来完成写文件的操作. 在这个练习中我们要用C#创建一个纯文本文件ex11.txt 放到c盘的Exerc ...