【并查集+强连通】 HDU 5222 Exploration
来源:互联网 发布:淘宝已买到宝贝提取器 编辑:程序博客网 时间:2024/06/16 10:02
点击打开链接
对于有向图: 对于一条边u,v 若uv在一个集合内则成环
对于无向图:用强向量判断
#include <cstdio>#include <cstring>#include <cstdlib>#include <iostream>#include <algorithm>using namespace std;#include<queue>#include <string>#include <sstream>#include <map>#include <vector>#define LL long long#define N 1000100#pragma comment(linker, "/STACK:102400000,102400000")vector<int>g[N];int n,m1,m2;int DFN[N],Low[N],Stack[N],Time,top;int taj,Belong[N],ok;bool Instack[N];void tarjan(int u,int fa){ DFN[u]=Low[u]=++Time; Stack[top++] = u; Instack[u]=1; for(int i=0;i<g[u].size();i++) { int v=g[u][i]; if(DFN[v]==-1) { tarjan(v,u); Low[u]=min(Low[u],Low[v]); } else if(Instack[v]) Low[u]=min(Low[u],DFN[v]); } if(Low[u]==DFN[u]) { int now,num=0; taj++; do{ now=Stack[--top]; Instack[now]=0; Belong[now]=taj; num++; if(num>1) ok=1;//两个点成环 }while(now!=u); }}void tarjan_init(int all){ memset(DFN,-1,sizeof(DFN)); memset(Instack,0,sizeof(Instack)); top=Time=taj=0; for(int i=1;i<=all;++i) if(DFN[i]==-1) tarjan(i,i);}int fa[N];int find(int a){ if(a!=fa[a]) return fa[a]=find(fa[a]); else return fa[a];}int main(){ int t,a,b; cin>>t; while(t--) { cin>>n>>m1>>m2; for(int i=1;i<=n;i++) g[i].clear(),fa[i]=i; ok=0; for(int i=0;i<m1;++i)//无向图 { scanf("%d%d",&a,&b); int x=find(a); int y=find(b); if(x==y) ok=1; fa[x]=y; } for(int i=0;i<m2;++i)//有向图 { scanf("%d%d",&a,&b); int x=find(a); int y=find(b); if(x==y) ok=1; g[x].push_back(y);//集合 } tarjan_init(n); if(ok) puts("YES"); else puts("NO"); } return 0;}/*3 1 21 21 33 2*/
0 0
- HDU 5222 - Exploration (强连通 + 并查集)
- 【并查集+强连通】 HDU 5222 Exploration
- HDU 5222 Exploration 并查集+强连通分量
- hdu Exploration (并查集 拓扑 强连通)
- hdu 1269 强连通+并查集
- 【HDU】5222 Exploration(并查集+拓扑排序)
- hdu 5222 Exploration(并查集+拓扑排序)
- HDU 1232 畅通工程 最小强连通通路-并查集
- HDU 1269 迷宫城堡(并查集判断强连通图)
- [二维并查集/强连通图]hdu 1269 迷宫城堡
- poj 3177 Redundant Paths 强连通+并查集
- 51nod 1456【强连通,缩点,并查集】
- 迷宫城堡(并查集,强连通分量)
- HDOJ 5222 Exploration 并查集+拓扑排序 找环
- hdu5222 Exploration【并查集+拓扑排序】
- hdu 1232 并查集 求连通分量的个数
- poj 2186(tarjam)强连通分量+并查集+缩点
- 强连通块数(深搜实现+并查集实现)
- 黑马程序员—java基础_Map集合
- eclipse的workspace下的server.xml与tomcat的server.xml不一致报错
- 【leetcode】Intersection of Two Linked Lists
- 浅析Windows系统环境变量
- 安装hexo
- 【并查集+强连通】 HDU 5222 Exploration
- php学习总结
- 小记 正则(一)
- codeforces63E Sweets Game DP,dfs,博弈
- thinking in java第十天
- 【Storm 入门】 Blot分流
- 听说东方素养要上央视?
- lost in city (修改后,时间大幅度减少,所以系统的find函数还是挺耗时的)
- 简单的无扩展Vim配置文件