[POJ1236]Network of Schools(Tarjan缩点+强连通分量)
来源:互联网 发布:淘宝天猫商城 编辑:程序博客网 时间:2024/05/24 01:46
题目描述
传送门
题解
Q1:求入度为0的强连通分量的个数;
Q2:入度为0的强连通分量的个数与出度为0的强连通分量的个数取max
Q2注意特判cnt为1的情况。
代码
#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int max_n=105;int n,x,N,calc,cnt,temp,ans1,ans2;int Dfn[max_n],Low[max_n],vis[max_n],strack[max_n],belong[max_n],in[max_n],out[max_n];bool a[max_n][max_n];inline void tarjan(int now){ Dfn[now]=Low[now]=++N; vis[now]=1; strack[++temp]=now; for (int i=1;i<=n;++i) if (a[now][i]){ if (!Dfn[i]){ tarjan(i); Low[now]=min(Low[now],Low[i]); } else if (vis[i]) Low[now]=min(Low[now],Dfn[i]); } if (Dfn[now]==Low[now]){ ++cnt; while (strack[temp]!=now) belong[strack[temp]]=cnt,vis[strack[temp]]=0,temp--; belong[strack[temp]]=cnt,vis[strack[temp]]=0,temp--; }}int main(){ scanf("%d",&n); for (int i=1;i<=n;++i){ while (~scanf("%d",&x)){ if (!x) break; if (i!=x) a[i][x]=true; } } for (int i=1;i<=n;++i) if (!Dfn[i]) tarjan(i); for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) if (a[i][j]&&belong[i]!=belong[j]) out[belong[i]]++,in[belong[j]]++; for (int i=1;i<=cnt;++i){ if (in[i]==0) ans1++; if (out[i]==0) ans2++; } if (cnt==1) printf("1\n0\n"); else{ printf("%d\n",ans1); printf("%d\n",max(ans1,ans2)); }}
0 0
- [POJ1236]Network of Schools(Tarjan缩点+强连通分量)
- POJ1236---Network of Schools (强连通分量,缩点,Tarjan算法)
- 【强连通分量】Tarjan(缩点)POJ1236-Network of Schools
- poj1236 Network of Schools(强连通分量,tarjan)
- Network of Schools POJ1236(tarjan缩点+强连通分量模板)
- POJ1236 Network of Schools(缩点+结论+强连通分量)
- POJ1236 Network of Schools【Tarjan】【强连通分量】
- POJ1236 Network of Schools(强连通分量:Tarjan算法)
- poj1236 Network of Schools 【连通图-强联通分量-tarjan】
- poj1236 Network of Schools ,有向图求强连通分量(Tarjan算法),缩点
- poj1236——Network of Schools(强连通分量+缩点)
- poj1236 - Network of Schools(强连通分量Garbow模板+缩点)
- poj1236-network of schools(强连通分量)
- poj1236 Network of Schools 强连通分量
- POJ1236 Network of Schools 【强连通分量】
- POJ1236--Network of Schools(强连通+缩点)
- POJ 1236 Network of Schools(强连通分量缩点+tarjan算法)
- 强连通分量,Tarjan,缩点(Network of Schools,POJ 1236)
- 基于Qt的Http编程基本原理
- Cardboard虚拟现实开发初步(三)
- 为React Native开发写的JS和React入门知识
- ZPL 打印条码、二维码及小票(中文/汉字),生成条码、二维码图片【Asp.Net】-含示例代码
- Struts2验证框架的配置及Validation.Xml常用的验证规则
- [POJ1236]Network of Schools(Tarjan缩点+强连通分量)
- 使用jbox做列表选择
- 用php和mysql开发招聘网站
- FrameBuffer
- VideoView 获取当前播放时间
- 高cpu排查
- sdut 2883 Hearthstone II (第二类Stiring数)
- 万物共享的物联网架构
- 研发管理总结