poj 2186 Popular Cows
2014-02-13 19:45
218 查看
http://poj.org/problem?id=2186
View Code
#include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <stack> #define maxn 100001 using namespace std; int dfn[maxn],low[maxn],belong[maxn],bcnt,bcc_clock,a[maxn],b[maxn],num[maxn],n,m,head[maxn],e; stack<int>s; bool vis[maxn],flag[maxn]; struct node { int v,next; }p[maxn]; void add(int u,int v) { p[e].v=v; p[e].next=head[u]; head[u]=e++; } void tarjan(int u) { dfn[u]=low[u]=++bcc_clock; vis[u]=true; s.push(u); for(int i=head[u]; i!=-1; i=p[i].next) { int v=p[i].v; if(!dfn[v]) { tarjan(v); low[u]=min(low[u],low[v]); } else if(vis[v]&&dfn[v]<low[u]) low[u]=dfn[v]; } if(dfn[u]==low[u]) { bcnt++; int j; do { j=s.top(); s.pop(); vis[j]=false; belong[j]=bcnt; }while(j!=u); } } void deal() { while(!s.empty()) { s.pop(); } memset(dfn,0,sizeof(dfn)); bcnt=0;bcc_clock=0; for(int i=1; i<=n; i++) { if(!dfn[i]) { tarjan(i); } } } void inti() { e=0; memset(head,-1,sizeof(head)); memset(belong,0,sizeof(belong)); memset(low,0,sizeof(low)); memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(num,0,sizeof(num)); memset(flag,false,sizeof(flag)); memset(vis,false,sizeof(vis)); } int main() { while(scanf("%d%d",&n,&m)!=EOF) { inti(); for(int i=1; i<=m; i++) { scanf("%d%d",&a[i],&b[i]); add(a[i],b[i]); } deal(); for(int i=1; i<=m; i++) { if(belong[a[i]]!=belong[b[i]]) flag[belong[a[i]]]=true; } for(int i=1; i<=n; i++) { num[belong[i]]++; } int t=0,ans; for(int i=1; i<=bcnt; i++) { if(!flag[i]) { t++; ans=num[i]; } } if(t==1) printf("%d\n",ans); else printf("0\n"); } return 0; }
View Code
相关文章推荐
- poj2186-Popular Cows
- POJ2186 Popular Cows 强连通分量tarjan算法
- POJ_2186 Popular Cows (Tarjan 强连通分量 缩点)
- POJ 2186 Popular Cows(初学强连通)
- POJ2186——Popular Cows
- poj 2186 Popular Cows (强连通分量 tarjan)
- POJ 2186:Popular Cows Tarjan模板题
- POJ 2186 Popular Cows
- poj 2186 Popular Cows
- POJ 2186 Popular Cows【强连通】
- POJ-2186-Popular Cows 解题报告
- poj 2186 Popular Cows
- poj 2186 Popular Cows
- poj 2186 Popular Cows 给定一个有向图,求有多少个顶点是由任何顶点出发都可达的 Kosaraju算法+缩点
- POJ 2186 Popular Cows
- POJ 2186 Popular Cows(强连通分量模板题)
- 【poj 2186】Popular Cows(强连通分量)
- Poj 2186 Popular Cows
- POJ 2186 Popular Cows(强连通分量缩点,Tarjan算法)
- POJ 2186 Popular Cows(强连通分量)