强连通分量+缩点uva12167
来源:互联网 发布:淘宝上怎么退货 编辑:程序博客网 时间:2024/05/20 08:25
思路:先求强连通分量,然后相同的连通分量缩成一个点,统计出度与入度最大的就是答案
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<vector>#include<stack>#include<algorithm>using namespace std;const int maxn=20010;int n,m;vector<int> G[maxn];stack<int> S;int pre[maxn],lowlink[maxn],dfs_clock,scc_cnt,sccno[maxn];int in[maxn],out[maxn];void init(){ for(int i=0;i<=n;i++)G[i].clear();}void dfs(int u){ pre[u]=lowlink[u]=++dfs_clock; S.push(u); for(int i=0;i<G[u].size();i++) { int v=G[u][i]; if(!pre[v]) { dfs(v); lowlink[u]=min(lowlink[u],lowlink[v]); } else if(!sccno[v]) lowlink[u]=min(lowlink[u],pre[v]); } if(lowlink[u]==pre[u]) { scc_cnt++; while(true) { int x=S.top();S.pop(); sccno[x]=scc_cnt; if(x==u)break; } }}void find_scc(){ dfs_clock=scc_cnt=0; memset(sccno,0,sizeof(sccno)); memset(pre,0,sizeof(pre)); for(int i=1;i<=n;i++) if(!pre[i])dfs(i);}int main(){ //freopen("in.txt","r",stdin); int t,a,b; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); init(); for(int i=0;i<m;i++) { scanf("%d%d",&a,&b); G[a].push_back(b); } find_scc(); for(int i=1;i<=scc_cnt;i++)in[i]=out[i]=1; for(int u=1;u<=n;u++) for(int i=0;i<G[u].size();i++) { int v=G[u][i]; if(sccno[u]!=sccno[v])in[sccno[v]]=out[sccno[u]]=0; } int a=0,b=0; for(int i=1;i<=scc_cnt;i++) { if(in[i])a++; if(out[i])b++; } int ans=max(a,b); if(scc_cnt==1)cout<<0<<endl; else cout<<ans<<endl; } return 0;}
0 0
- 强连通分量+缩点uva12167
- 【UVa12167】 Proving Equivalences 【强连通分量】
- 强连通分量缩点
- 强连通分量缩点
- 强连通分量 + 缩点 kosaraju
- 强连通分量缩点的模板
- POJ2186 Tarjan强连通分量+缩点
- 强连通分量+缩点-poj1236
- poj 2186 强连通分量 缩点
- poj 1236 强连通分量 缩点
- 强连通分量+缩点(poj2553)
- poj1236强连通分量+缩点
- hdu 4635 强连通分量+缩点
- POJ2186Popular Cows(强连通分量+缩点)
- poj 1236 强连通分量+缩点
- poj1236 强连通分量+缩点
- poj2186 强连通分量+缩点
- hdu4635(强连通分量,缩点)
- JDK环境变量配置,保证大家过目不忘!
- Ueditor
- Android系统四种数据存储
- Code Style
- seajs配合spm应用之四弹出框
- 强连通分量+缩点uva12167
- LVS技术浅析
- Freeswitch常用配置
- object count bolt
- ASP.NET MVC 系列之 (MVC中使用Ninject)
- ACM中国国家集训队论文集目录(1999-2009)
- classpath 小解
- 2011年清华大学计算机研究生机试真题之四
- java 去掉空格