POJ 1144 Network(简单求无向图割顶数)
来源:互联网 发布:windows中文件切换 编辑:程序博客网 时间:2024/05/16 12:22
思路:简单的求无向图割点,上模板即可
#include <cstdio>#include <queue>#include <cstring>#include <iostream>#include <cstdlib>#include <algorithm>#include <vector>#include <map>#include <string>#include <set>#include <ctime>#include <cmath>#include <cctype>using namespace std;#define maxn 1000#define LL long longint cas=1,T;int n,m;int dfs_clock; //时钟,每访问一个结点增1vector<int>G[maxn]; //图int pre[maxn]; //pre[i]表示i结点被第一次访问到的时间戳,若pre[i]==0表示还未被访问int low[maxn]; //low[i]表示i结点及其后代能通过反向边连回的最早的祖先的pre值bool iscut[maxn]; //标记i结点是不是一个割点//求出以u为根节点(u在DFS树中的父节点是fa)的树的所有割点和桥//初始调用dfs(root,-1)int dfs(int u,int fa){int lowu=pre[u]=++dfs_clock;int child = 0; //子结点数目for (int i = 0;i<G[u].size();i++){int v = G[u][i];if (!pre[v]){child++; //未访问过的结点才能算是u的孩子int lowv = dfs(v,u);lowu = min(lowu,lowv);if (lowv >=pre[u]){iscut[u]=1; //u是割点//if (lowv > pre[u]) //(u,v)边时桥//printf("qiao")}}else if (pre[v] <pre[u] && v!=fa) //v!=fa确保了(u,v)是从u到v的反向边{lowu = min(lowu,pre[v]);}}if (fa < 0 && child == 1)iscut[u]=0; //若u是根且孩子数<=1,那么u就不是割点return low[u]=lowu;}void init(){dfs_clock = 0;memset(pre,0,sizeof(pre));memset(iscut,0,sizeof(iscut));for (int i = 1;i<=n;i++)G[i].clear();}int get(char *s){ int v = 0; for (int i = 0;s[i];i++) v=v*10+s[i]-'0'; return v;}int main(){while (scanf("%d",&n)!=EOF && n){init(); char str[10];while (scanf("%s",str)){if (str[0]=='0')break;int u = get(str);while (scanf("%s",str)){int v = get(str);G[u].push_back(v);G[v].push_back(u);if (getchar()=='\n')break;}}dfs(1,-1); int ans = 0;for (int i = 1;i<=n;i++)if (iscut[i])ans++;printf("%d\n",ans);}//freopen("in","r",stdin);//scanf("%d",&T);//printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);return 0;}
0 0
- POJ 1144 Network(简单求无向图割顶数)
- POJ 1144 Network(简单求无向图割顶数)
- POJ 1144 Network(简单求无向图割顶数)
- POJ 1144 - Network 用tarjan求无向图的割点
- 求无向图的割点 (poj 1144 Network)
- POJ 1144 Network Tarjan 求无向图的割点的个数 Tarjan 模板题
- POJ 1144 Network(求无向图中的割点)
- poj 1966 Cable TV Network 无向图最小割
- POJ 2914 Minimum Cut //无向图求最小割
- poj 1966 Cable TV Network 【枚举源汇 求解 无向图最小割】
- 【无向图求最小割集】
- 求无向图最小割
- poj 2914 无向图最小割
- POJ-2914-无向图最小割
- ZJU1311 Network - 无向图的割点
- POJ1144.Network——无向图的割点
- poj 2914 Minimum Cut 求无向图的最小割 Stoer-Wagner算法模板
- POJ-3352-无向图的割顶和桥-求边-双连通分量
- hdu 5616 Jam's balance
- JS实现无限分页加载——原理图解
- Python 程序员都会喜欢的6个程序库
- DevComponents.DotNetBar.TabControl页签文字竖排
- 环境变量与文件查找
- POJ 1144 Network(简单求无向图割顶数)
- 配置Rsync Windows 服务端和Linux客户端
- 锋利的JQuery —— JQuery性能优化
- [BZOJ3110][Zjoi2013]K大数查询
- 好看的H5登录界面 动态云
- 花生壳使用 - 代理发布本地Tomcat
- POJ 2610:Dog & Gopher
- 图片压缩指定大小
- Ninja初步