HDU 3836 Equivalent Sets
来源:互联网 发布:有哪些是网络信息安全 编辑:程序博客网 时间:2024/05/16 10:12
同:HDU2767点击打开链接
#include<iostream>#include<stack>#include<cstring>using namespace std;const int N=20000+5;const int M=50000+5;stack<int>s;struct node{ int to,next;}G[M];int head[N],cnt;int indegree[N],outdegree[N];int low[N],dfn[N];int paint[N];int vis[N],sta[N];//int num[N];int index,col;inline void Init(){ cnt=0;index=1;col=1; memset(head,-1,sizeof(head)); memset(indegree,0,sizeof(indegree)); memset(outdegree,0,sizeof(outdegree)); //memset(num,0,sizeof(num)); memset(low,0,sizeof(low)); memset(dfn,0,sizeof(dfn)); memset(paint,0,sizeof(paint)); memset(sta,0,sizeof(sta)); memset(vis,0,sizeof(vis)); while(!s.empty()) s.pop();}inline void add(int a,int b){ G[cnt].to=b; G[cnt].next=head[a]; head[a]=cnt++;}inline int Min(int a,int b){ if(a<b) return a; return b;}inline int Max(int a,int b){ if(a>b) return a; return b;}void Tarjan(int u){ vis[u]=1;sta[u]=1; low[u]=dfn[u]=index++; s.push(u); for(int i=head[u];i+1;i=G[i].next) { int to=G[i].to; if(!vis[to]) { Tarjan(to); low[u]=Min(low[u],low[to]); } else if(sta[to]) { low[u]=Min(low[u],dfn[to]); } } if(low[u]==dfn[u]) { int k=s.top(); while(u!=k) { s.pop(); paint[k]=col; //num[col]++; sta[k]=0; k=s.top(); } s.pop(); paint[u]=col; sta[u]=0; //num[col]++; col++; }} int main(){ int n,m; while(cin>>n>>m) { if(m==0) { cout<<n<<endl;continue; } Init(); while(m--) { int a,b; cin>>a>>b; add(a,b); } for(int i=1;i<=n;i++) { if(!vis[i]) { Tarjan(i); } } col--; if(col==1) { cout<<"0"<<endl;continue; } for(int i=1;i<=n;i++) { for(int j=head[i];j+1;j=G[j].next) { int a=i,b=G[j].to; if(paint[a]!=paint[b]) { indegree[paint[b]]++; outdegree[paint[a]]++; } } } int in=0,out=0; for(int i=1;i<=col;i++) { if(!indegree[i]) in++; if(!outdegree[i]) out++; } cout<<Max(in,out)<<endl; } return 0;}
0 0
- hdu 3836 Equivalent Sets
- hdu 3836 Equivalent Sets
- HDU 3836 Equivalent Sets
- hdu 3836 Equivalent Sets
- HDOJ/HDU 3836 Equivalent Sets
- [图论] hdu 3836 Equivalent Sets
- [tarjan] hdu 3836 Equivalent Sets
- HDU 3836 — Equivalent Sets
- hdu acm 3836 Equivalent Sets
- HDU 3836 Equivalent Sets 强连通分量
- HDU 3836 Equivalent Sets(强连通分量)
- HDU 3836 Equivalent Sets(Tarjan+缩点)
- hdu 3836 Equivalent Sets【强联通】
- HDU 3836:Equivalent Sets【强连通】
- HDU 3836 Equivalent Sets 强连通分量
- HDU 3836 Equivalent Sets(强连通分量)
- HDU 3836 —— Equivalent Sets
- hdu 3836 Equivalent Sets //tarjan+缩点
- Android API 23中废弃了HttpClient的解决办法
- js 控制 checkbox不选中
- ViewPagerIndictor框架的使用(第一部分)
- HDU 1232 畅通工程
- javaScript学习笔记——数组末尾元素的增加和删除
- HDU 3836 Equivalent Sets
- Android逆向小试牛刀(破解阅读软件广告)
- 使用纯java基本语言实现泰勒展开的sin和cos计算
- Robot Framework自动化测试框架(一):环境搭建
- 19.栈的压入、弹出序列(做第二遍时感觉仍有难度,做第三次时依然需要看思路,但是已经觉得简单了)
- Android 文件储存
- Static2
- NSuserdefaults 数据保存安全性[黑科技分析]
- Reddit网站获赞最高文章/评论的爬取