POJ 1144 Network (割点)
来源:互联网 发布:python smtp发送邮件 编辑:程序博客网 时间:2024/06/05 15:05
思路:
模版似的tarjan求割点。
注意本题输入很坑。。根本没必要这么搞啊。。
(我一开始读的char,被坑死,后来换了一种别人的写法就OK了)
#include <cstdio>#include <iostream>#include <string.h>#include <algorithm>using namespace std;const int maxn = 110;int ma[maxn][maxn];int dfn[maxn],low[maxn],vis[maxn],stak[maxn],cntc,cntv,cnts,index;int n;void dfs(int u,int f){ dfn[u]=low[u]=++index; stak[cnts++] = u; vis[u] = 1;int chil = 0,flagu = 1; for(int i = 1;i <= n;i++){ if(ma[u][i] && i!=f){ chil++; if(!dfn[i]){ dfs(i,u); low[u] = min(low[u],low[i]); if(flagu && dfn[u] <= low[i] && (f != -1||chil > 1) ) { cntv++;flagu = 0; } } else if(vis[i]){ low[u] = min(low[u],dfn[i]); } } } if(dfn[u]==low[u]){ cntc++;int v; do{ v = stak[--cnts]; vis[v]=0; }while(v!=u); }}void tarjan(){ for(int i = 1; i <= n;i++){ if(!dfn[i]) dfs(i,-1); }}int main(){ while(scanf("%d",&n),n){ int u,v; memset(ma,0,sizeof(ma));index = 0,cntc = 0,cntv=0,cnts=0; memset(dfn,0,sizeof(dfn)); memset(low,0,sizeof(low)); memset(vis,0,sizeof(vis)); while(scanf("%d",&u) && u){ while(getchar()!='\n'){ scanf("%d",&v); ma[u][v]=1; ma[v][u]=1; } } tarjan(); printf("%d\n",cntv); }}
阅读全文
1 0
- poj 1144 Network(割点)
- poj 1144 Network (割点)
- poj 1144 Network (割点模板)
- 【POJ 1144】 Network(割点入门)
- POJ 1144 Network (割点)
- POJ 1144 Network //割点
- Poj 1144 Network (割点)
- POJ 1144 Network【割点】
- poj 1144 Network(割点)
- POJ 1144 Network (割点模板题)
- 【连通图|割点】POJ-1144 Network
- POJ 1144 Network【割点个数】
- poj 1144 Network (tarjan割点模板)
- POJ 1144 / ZOJ 1311 : Network - 割点个数
- poj 1144 Network 图论基础 图的割点
- POJ 1144 Network(割点数量)
- POJ 1144 Network (割顶)
- 求无向图的割点 (poj 1144 Network)
- 如何:在十六进制字符串与数值类型之间转换(C# 编程指南)
- SQL 必须记住的关键字
- 程序员的成长之路
- 跟我一起学C语言(第七天)
- Centos 7 ftp连接出现500 OOPS: vsftpd: refusing to run with writable root inside chroot()
- POJ 1144 Network (割点)
- PHP常量、数据类型
- Qt笔记·第三篇窗口布局
- Java常用的字符串操作
- linux 下 gtest 的安装
- 数据库(一):ACID,事务,隔离级别
- ***POJ3255-Roadblocks
- AI圣经!《深度学习》中文版隆重上市!美国亚马逊AI领域排名第一畅销书!
- Spring 模块和 Spring Portfolio