tarjan缩点模板 poj 2186
来源:互联网 发布:java 获取月份第一天 编辑:程序博客网 时间:2024/04/28 03:41
代码如下:
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int maxn=50000+5;int n,m,ans,hd[maxn],to[maxn],nxt[maxn],tot;int mp[maxn],dfn[maxn],low[maxn],cnt,C;//Tarjan,mp[]&C缩点int stk[maxn],tail=0;bool instk[maxn]; int du[maxn];inline int read(){ char ch=getchar(); int f=1,x=0; while(!(ch>='0'&&ch<='9')){ if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return f*x;}inline void add(int x,int y){ to[tot]=y; nxt[tot]=hd[x]; hd[x]=tot++;}void tarjan(int root){ dfn[root]=low[root]=++cnt; stk[++tail]=root;//root入栈 instk[root]=1; for(int i=hd[root];i!=-1;i=nxt[i]){ if(dfn[to[i]]==0) tarjan(to[i]),low[root]=min(low[root],low[to[i]]); else if(instk[to[i]]) low[root]=min(low[root],dfn[to[i]]); } if(low[root]==dfn[root]){ C++; int tmp; do{ tmp=stk[tail--]; instk[tmp]=0; mp[tmp]=C; }while(tmp!=root); }}signed main(void){ n=read(),m=read(); memset(hd,-1,sizeof(hd)),tot=0; for(int i=1,x,y;i<=m;i++) x=read(),y=read(),add(x,y); for(int i=1;i<=n;i++) if(dfn[i]==0) tarjan(i);//如果未访问过,dfs for(int i=1;i<=n;i++) for(int j=hd[i];j!=-1;j=nxt[j])//遍历临接表 if(mp[i]!=mp[to[j]]) du[mp[i]]++; int sum=0,tmp=0; for(int i=1;i<=C;i++) if(du[i]==0) sum++,tmp=i; if(sum==1) for(int i=1;i<=n;i++) ans+=mp[i]==tmp; cout<<ans<<endl; return 0;}
1 0
- tarjan缩点模板 poj 2186
- poj 2186 DAG+缩点+tarjan模板 (模板待消化
- POJ 2186【Tarjan算法(模板_缩点)】
- poj 2186 (tarjan 缩点)
- Tarjan缩点模板
- poj 2186 Popular Cows (tarjan + 缩点)
- POJ 2186 Popular Cows -- tarjan 缩点
- 【tarjan缩点+小拓展】【POJ-2186】
- POJ 2186 popular cows (tarjan + 缩点)
- POJ 2186 Popular Cows 【Tarjan+缩点】
- POJ 2186 Tarjan 缩点 解题报告
- poj 1144 Network (tarjan割点模板)
- POJ 1236(tarjan+缩点)
- (tarjan缩点)poj 2186 Popular Cows
- poj 2186 Popular Cows (tarjan缩点)
- POJ 2186 -- Popular Cows【强连通分支 && Tarjan缩点】
- POJ 2186 Popular Cows tarjan缩点 强连通分量
- POJ 2186 Popular Cows (Tarjan + 缩点)
- Vue.js学习 Item14 – 过滤器与自定义过滤器
- 谈谈jquery的事件名称和命名空间
- Hibernate-----@DynamicInsert、@DynamicUpdate
- java初学之switch语句
- 腾讯Bugly异常监控集成
- tarjan缩点模板 poj 2186
- POJ-3356-AGTC
- 团体程序设计天梯赛-练习集 L1
- Vue.js学习 Item15 – 构建大型web应用
- 一个网站的成长
- 结构体对齐详解——转自“酱油和醋”
- POJ1201
- 《C++程序设计原理及实践》- 错误
- Vue.js学习 Item16 – 各种Web流行MV*框架对比