poj 1144 Network
来源:互联网 发布:sem优化技巧 编辑:程序博客网 时间:2024/06/13 21:38
题意:给定你一张图,求改图中有几个割点。
分析:直接上tarjan。
AC代码:
#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>using namespace std;const int maxn = 105; int n;bool edge[maxn][maxn];int vis[maxn];//for tarjan int low[maxn];//for tarjanint subnet[maxn];//int cnt;//for tarjanint cut;bool input(){scanf("%d",&n);if(n == 0) return false;//clearfor(int i = 0; i <= n; i++){for(int j = 0; j <= n; j++){edge[i][j] = false;}}char s[1000];char *ss;int u,v;int p;gets(s);//清除换行 while(1){gets(s);ss = s;sscanf(ss,"%d%n",&u,&p);if(u == 0) break;ss += p;while(strlen(ss) > 0){sscanf(ss,"%d%n",&v,&p);ss += p;edge[u][v] = edge[v][u] = true;}}return true;}void dfs(int u){//tarjanvis[u] = low[u] = ++cnt;for(int v = 1; v <= n; v++){if(edge[u][v]){if(!vis[v]){dfs(v);low[u] = min(low[u],low[v]);if(low[v] >= vis[u]){subnet[u]++;}}else low[u] = min(low[u],vis[v]);}}}void solve(){//clearcnt = 0; cut = 0; for(int i = 0; i <= n; i++) {vis[i] = 0; subnet[i] = 0;}dfs(1);if(subnet[1] > 1) cut++;for(int i = 2; i <= n; i++){if(subnet[i]) cut++;}printf("%d\n",cut);}int main(){while(input()){solve();}return 0;}
0 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 图论
- poj 1144 Network
- POJ 1144 Network
- POJ 1144 Network
- POJ 1144 Network 笔记
- POJ 1144 Network 求割点
- Swift中的闭包(Closure)
- Android开发中json数据解析工具类
- 2015年第三周项目五:数组做数据成员(2)
- OSI七层网络模型与TCP/IP四层网络
- 工作周报034
- poj 1144 Network
- 通达OA-今日学习:无法显示在线人数、无法看到用户列表、无法弹出短信等
- REST接口:生成war包
- eclipse svn版本冲突
- Apache Prefork、Worker和Event三种MPM分析
- 浅析proc文件系统的创建和create_proc_read_entry函数的具体实现
- Shell分割迭代字符串
- JAVA WEB应用特点
- Matlab二元函数绘图