SDUT 3364-数据结构实验之图论八:欧拉回路(并查集)
2015-11-26 16:16
429 查看
题目地址:SDUT 3364
#include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> #include <iostream> #include <sstream> #include <algorithm> #include <set> #include <queue> #include <stack> #include <map> #include <bitset> #pragma comment(linker, "/STACK:102400000,102400000") typedef long long LL; const int inf=0x3f3f3f3f; const double pi= acos(-1.0); const double esp=1e-6; using namespace std; const int Maxn=1010; int uset[Maxn]; int ran[Maxn]; void makeset(int n) { memset(ran,0,sizeof(ran)); for(int i=0;i<=n;i++) uset[i]=i; } int findx(int x) { int p=x,t; while(uset[p]!=p) p=uset[p]; while(x!=uset[x]) { t=uset[x]; uset[x]=p; x=t; } return x; } void unionset(int x,int y) { int x1=findx(x); int y1=findx(y); if(x1!=y1) { uset[x1]=y1; } } int main() { int T; int n,m,u,v; scanf("%d",&T); while(T--){ scanf("%d %d",&n,&m); makeset(n); while(m--){ scanf("%d %d",&u,&v); ran[u]++; ran[v]++; unionset(u,v); } int t=findx(1); int flag=0; for(int i=1;i<=n;i++){ if(ran[i]%2||findx(i)!=t){ flag=1; break; } } if(flag) puts("0"); else puts("1"); } return 0; }
相关文章推荐
- SDUT 3363-数据结构实验之图论七:驴友计划(最短路_dijkstra)
- SDUT 3362-数据结构实验之图论六:村村通公路(最小生成树_prim)
- SDUT 3361-数据结构实验之图论四:迷宫探索(dfs)
- 《大话数据结构》之Prim算法
- 文章标题
- 数据结构与算法(1)——分解质因数及各种方法求最大公约数
- 《大话数据结构》之广度优先遍历
- 《大话数据结构》之图的深度优先遍历
- 数据结构实验之图论八:欧拉回路
- 数据结构实验之图论四:迷宫探索
- 【数据结构】 栈的应用举例(3例)——更好的学习和理解栈
- 数据结构之二叉树详说
- 数据结构之堆(java)
- 数据结构实验之图论四:迷宫探索
- 【2015/11/21】 数据结构学习日志_Day17 双端链表
- leetcode之Rotate Array
- redis数据结构-链表
- 双向链表
- 数据结构与算法(4)--队列
- 机器学习模型数据结构:logistic regression, neural network, convolutional neural network