CODEVS 4511 信息传递
来源:互联网 发布:西门子ug软件侵权 编辑:程序博客网 时间:2024/05/19 19:59
//即求不为1的最小的强连通分量 #include<cstdio>#include<iostream>using namespace std;const int maxn = 200050;struct node{ int hou,ne;}g[maxn];int stack[maxn],instack[maxn],dfn[maxn],low[maxn];int top = 0,bcnt,ans = 0x7fffffff,index,tmp;int sum[maxn],f[maxn],haoyu[maxn];int mark;void Tarjan(int u){ stack[top++] = u; instack[u] = 1; dfn[u] = low[u] = ++index; for(int i = f[u];i != 0;i = g[i].ne){ int v = g[i].hou; if(!dfn[v]){ Tarjan(v); low[u] = min(low[v],low[u]); } else if(instack[v]){ low[u] = min(low[u],dfn[v]); } } if(dfn[u] == low[u]){ bcnt++; int v; while(u != v){ v = stack[--top]; haoyu[v] = bcnt; instack[v] = 0; sum[bcnt]++; } }}void in(int x,int y){ tmp++; g[tmp].hou = y; g[tmp].ne = f[x]; f[x] = tmp;}int main(){ int n,m,a,b,t; cin>>n; for(int i = 1;i <= n;i++){ cin>>b; in(i,b); } for(int i = 1;i <= n;i++){ if(!dfn[i]) Tarjan(i); } for(int i = 1;i <= n;i++){ if(sum[haoyu[i]] < ans && sum[haoyu[i]] > 1){ ans = sum[haoyu[i]]; } } cout<<ans<<endl; return 0;}
0 0
- CODEVS 4511 信息传递
- Codevs 4511 信息传递
- codevs 4511 信息传递(NOIP2015 day1 T2)
- codevs 4511 信息传递 NOIP2015 day1 T2
- codevs 4511 信息传递 NOIP2015 day1 T2
- 4511 信息传递
- 信息传递
- 【NOIP2015】信息传递 CODE[VS] 4511
- 自定义信息传递
- 窗口信息传递
- 浏览器传递参数信息
- QNX操作系统信息传递
- Activity跳转传递信息
- 神经信息传递
- handler信息传递
- BroadcastReceiver广播传递信息
- 【Android】【信息传递】StartActivityForResult
- [NOIP2015]信息传递
- cocos-js,数据本地存储
- BCP 数据的导入和导出
- Python学习随机(第二弹)
- Leetcode学习(40)—— Valid Anagram
- 使用Ado.net执行SP很慢,而用SSMS执行很快
- CODEVS 4511 信息传递
- mac 下载编译Android源码
- JDK中的URLConnection参数详解
- 分布式架构学习之:006--构建Dubbo服务消费者Web应用的war包并在Tomcat中部署
- phoenix使用
- iOS添加启动页图片添加设置
- SSIS 数据流优化
- 查看安装的证书
- Dataquest学习总结[3]