tarjan(SCC)模板
来源:互联网 发布:剑三苍云捏脸数据成女 编辑:程序博客网 时间:2024/06/05 07:01
hdu 1269即模板题,缩完点后判断点数是否为1即可。
图论题一定要记着memset(head,-1,sizeof(head))(如果题目不含0号点也可以memset成0),否则就坐等TLE吧。。。
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<stack>using namespace std;const int maxn=10004,maxm=100004;stack<int> S;int n,m;int head[maxn],nxt[maxm],cnt,dest[maxm];int low[maxn],dfn[maxn],scnt;bool ins[maxn];void init() { scnt=cnt=0; memset(ins,false,sizeof(ins)); memset(dfn,0,sizeof(dfn)); memset(head,-1,sizeof(head));}void adde(int from,int to) { nxt[++cnt]=head[from]; dest[cnt]=to; head[from]=cnt;}void dfs(int p) { S.push(p); ins[p]=1; low[p]=dfn[p]=++cnt; for (int i=head[p];~i;i=nxt[i]) { int j=dest[i]; if (!dfn[j]) { dfs(j); low[p]=min(low[p],low[j]); } else if (ins[j]) { low[p]=min(low[p],dfn[j]); } } if (dfn[p]==low[p]) { ++scnt; while (!S.empty()) { int t=S.top(); ins[t]=0; S.pop(); if (t==p) break; } }}void tarjan() { for (int i=1;i<=n;i++) if (!dfn[i]) dfs(i);}int main() { while (scanf("%d%d",&n,&m)&&(n||m)) { int u,v; init(); while (m--) { scanf("%d%d",&u,&v); adde(u,v); } tarjan(); if (scnt==1) printf("Yes\n"); else printf("No\n"); } return 0;}
阅读全文
0 0
- tarjan(SCC)模板
- SCC的Tarjan算法模板
- Tarjan SCC
- HDU 1269 迷宫城堡 (tarjan scc)
- HDU 2767 Proving Equivalences (tarjan scc)
- 强连通分量SCC(Tarjan)
- 【东方模拟赛】【模板】上白泽慧音 tarjan找scc
- SCC模板
- SCC Tarjan算法
- Tarjan算法求解强连通分量(SCC)
- hdu 6165 FFF at Valentine (Tarjan算法,scc+dp)
- 不完全浅析Tarjan求强连通分量(SCC)
- UVALive4287-- Proving Equivalences(SCC+Tarjan)
- 【POJ1236】【tarjan】【SCC强连通】
- 求割边模板(tarjan)
- tarjan模板(hdu1269)
- HDU 1269(Tarjan模板)
- 强联通 tarjan (模板)
- C++Primer Plus(第六版) 第十二章 第二题
- HDU-2389 Rain on your Parade(二分图之Hopcroft-Karp算法)
- Best Cow Line POJ
- 我的服务器开发之路-安装mysql之mariadb并更改数据库路径
- CSS布局 position float
- tarjan(SCC)模板
- 15、链表中倒数第k个节点
- 【python技能】词频统计
- Django之Mode的外键自关联和引用未定义的Model
- CentOS 7 下开启Mysql-5.7.19远程访问
- 326. Power of Three
- JS运算符优先级
- 回文字符串
- 【后台】Lighttpd