poj 1236 (强连通)
来源:互联网 发布:辽阳有线淘宝营业厅 编辑:程序博客网 时间:2024/04/24 08:58
#include<cstdio>#include<cstring>#define MAX_N 110#define MAX(x,y) ((x)>(y)?(x):(y))using namespace std;int map[MAX_N][MAX_N],rmap[MAX_N][MAX_N],vis[MAX_N],stack[MAX_N],cmp[MAX_N];int tot=0,n;void dfs(int i){vis[i]=1;for(int j=1;j<=n;j++){if(!vis[j]&&map[i][j])dfs(j);}stack[tot++]=i;}void rdfs(int i,int k){vis[i]=1;cmp[i]=k;for(int j=1;j<=n;j++){if(!vis[j]&&rmap[i][j])rdfs(j,k);}}int scc(){memset(vis,0,sizeof(vis));for(int i=1;i<=n;i++){if(!vis[i])dfs(i);}int k=1;memset(vis,0,sizeof(vis));for(int i=tot-1;i>=0;i--){if(!vis[stack[i]]){vis[stack[i]]=1; rdfs(stack[i],k++); }}return k;}int main(){int j,k,in[MAX_N],out[MAX_N];scanf("%d",&n);for(int i=1;i<=n;i++){ while(~scanf("%d",&j)&&j){map[i][j]=1;rmap[j][i]=1;}}k=scc();memset(in,0,sizeof(in));memset(out,0,sizeof(out)) ;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(map[i][j]&&cmp[i]!=cmp[j]){in[cmp[j]]++;out[cmp[i]]++;}}}int t1=0,t2=0;for(int i=1;i<k;i++){if(!in[i])t1++;if(!out[i])t2++;}if(k==2)printf("1\n0\n");else printf("%d\n%d\n",t1,MAX(t1,t2));}
0 0
- poj 1236 (强连通)
- poj-1236 强连通
- poj 1236(tarjam)强连通分量
- poj 1236【强连通分量】
- poj 1236 Kosaraju 强连通
- poj 1236 Network of Schools(强连通分量构造强连通图)
- POJ 1236 Network of Schools(强连通分量)
- POJ 1236 Network of Schools(强连通分量)
- POJ 1236 Network of Schools(强连通分量)
- POJ 1236 Network of Schools(强连通分量)
- poj 1236 Network of Schools(强连通分量 Tarjan)
- POJ -- 1236 Network of Schools(强连通)
- poj 1236 Network of Schools(强连通分量)
- POJ-1236-Network of Schools(强连通分量)
- POJ-1236 Network of Schools (强连通分量[Tarjan])
- POJ 1236 Network of Schools (强连通分量tarjan)
- 【POJ 1236】Network of Schools(强连通分量_tarjan)
- poj 1236 强连通图 tarjan算法
- android 短/彩信数据表不能插入
- poj 1061 青蛙的约会
- UE4中动态时钟蓝图
- Java之异常处理
- Ubuntu 14.04 gcc降级为4.7.x版本
- poj 1236 (强连通)
- Redis有多快?
- LInux系统下安装搜狗输入法(以Ubuntu为例子)
- seekg()/seekp()与tellg()/tellp()的用法详解
- 为什么匿名内部类和局部内部类只能访问final变量
- App请求权限
- getElementsByClassName的兼容性
- F
- iOS 设备获取设备相关信息