无向图的割顶和桥(tarjan模板)
来源:互联网 发布:淘宝上买圣衣神话 编辑:程序博客网 时间:2024/04/27 22:10
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;#define maxn 7500#define inf 0x3f3f3f3fint first[maxn],to[maxn],nxt[maxn],e;int pre[maxn],low[maxn];int clock;int iscut[maxn];void add(int u,int v){ to[e]=v;nxt[e]=first[u];first[u]=e++;}int dfs1(int u,int fa){ low[u]=pre[u]=++clock; for(int i=first[u];~i;i=nxt[i]){ int v=to[i]; if(!pre[v]){ low[u]=min(low[u],dfs1(v,u)); } else if(pre[v]<pre[u]&&v!=fa){ low[u]=min(low[u],pre[v]); } } return low[u];}int n,m,t;int g[maxn][maxn];struct edge{ int u,v; edge(int u,int v):u(u),v(v){}; edge(){};}bridge[maxn];int dfs(int u,int fa){ low[u]=pre[u]=++clock; for(int v=1;v<=n;v++){ if(g[u][v]){ if(!pre[v]){ int lowv=dfs(v,u); low[u]=min(low[u],lowv); if(lowv>=pre[u]){ iscut[u]=1; } if(lowv>pre[u]){ bridge[t++]=edge(u,v); } } else if(pre[v]<pre[u]&&v!=fa){ low[u]=min(low[u],pre[v]); } } } if(fa<0)iscut[u]=0; return low[u];}void inital(){ t=0; e=0; clock=0; memset(first,-1,sizeof first); memset(pre,0,sizeof pre); for(int i=1;i<=n;i++){ low[i]=10000; }}int main(){ int u,v; freopen("in.txt","r",stdin); while(~scanf("%d%d",&n,&m)){ inital(); for(int i=0;i<m;i++){ scanf("%d%d",&u,&v); //add(u,v); //add(v,u); g[u][v]=g[v][u]=1; } for(int i=1;i<=n;i++){ if(!pre[i])dfs(i,-1); } for(int i=1;i<=n;i++){ printf("%d %d\n",pre[i],low[i]); } for(int i=1;i<=n;i++){ printf("%d ",iscut[i]); } printf("\n下面是桥:\n"); for(int i=0;i<t;i++){ printf("%d -> %d\n",bridge[i].u,bridge[i].v); } printf("\n"); }}
0 0
- 无向图的割顶和桥(tarjan模板)
- 深夜敲模板_4——无向图的割顶和桥
- 无向图的割顶和桥,无向图的双连通分量入门详解及模板
- 【无向图的割顶和桥】
- 无向图的割顶和桥
- 无向图的割顶和桥
- 无向图的割顶和桥
- 图论总结(2)无向图的割顶和桥
- 无向图的割顶与桥
- 无向图的割顶与桥
- 无向图的割顶(poj1523,1144)
- Tarjan求无向图桥和割点
- POJ 1144 Network Tarjan 求无向图的割点的个数 Tarjan 模板题
- HDU 3849 无向图的割顶和桥模版题
- POJ-3352-无向图的割顶和桥-求边-双连通分量
- 无向图的割顶、桥和双联通分量
- 无向图的割顶、桥和边双连通分量
- tarjan算法--求无向图的割点和桥
- 2015 Multi-University Training Contest 4(HDOJ5327、5328、5335、5536)
- 机试算法讲解: 第55题 完全背包之储蓄罐最少放了多少钱
- ICCMO微信公众账号开发系列(2)打造微信聊天机器人
- noip知识范围
- 二叉树的最大深度
- 无向图的割顶和桥(tarjan模板)
- Vijos1128.选数
- WPF中DependencyObject与DependencyProperty的源码简单剖析
- Linux进程间通信——消息队列
- Python logging 模块简单实用
- UBCF和IBCF的python实现和比较
- js中获取键盘事件
- zoj 1610 Count the Colors --线段树成段更新
- 矩形A + B