查找图的割点 邻接表优化
来源:互联网 发布:手机文件夹清理软件 编辑:程序博客网 时间:2024/05/21 11:20
#include"iostream"
#include"cstdio"
using namespace std;
int u[100];
int v[100];
int w[100];
int first[100];
int next[100];
int n,m;
int sum[100];
int flag[100];
int root;
int index=0;
int num[100];
int low[100];
void dfs(int cur,int father)
{
int child=0;
index++;
num[cur]=low[cur]=index;
int t=first[cur];
while(t!=-1)
{
if(num[v[t]]==0)
{
child++;
dfs(v[t],cur);
low[cur]=min(low[v[t]],num[cur]);
if(cur!=root&&low[v[t]]>=num[cur])
{
sum[cur]++;
flag[cur]=1;
}
if(cur==root&&child>=2)
{
sum[cur]++;
flag[cur]=1;
}
}
else
{
if(v[t]!=father)
{
low[cur]=min(low[cur],num[v[t]]);
}
}
t=next[t];
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
first[i]=-1;
sum[i]=1;
}
for(int i=1;i<=m;i++)
{
cin>>u[i]>>v[i];
w[i]=1;
}
for(int i=1+m;i<=2*m;i++)
{
u[i]=v[i-m];
v[i]=u[i-m];
w[i]=w[i-m];
}
for(int i=1;i<=2*m;i++)
{
next[i]=first[u[i]];
first[u[i]]=i;
}
root=1;
dfs(1,root);
for(int i=1;i<=n;i++)
{
if(flag[i]==1)
{
cout<<i<<' '<<sum[i]<<endl;
}
}
return 0;
}
#include"cstdio"
using namespace std;
int u[100];
int v[100];
int w[100];
int first[100];
int next[100];
int n,m;
int sum[100];
int flag[100];
int root;
int index=0;
int num[100];
int low[100];
void dfs(int cur,int father)
{
int child=0;
index++;
num[cur]=low[cur]=index;
int t=first[cur];
while(t!=-1)
{
if(num[v[t]]==0)
{
child++;
dfs(v[t],cur);
low[cur]=min(low[v[t]],num[cur]);
if(cur!=root&&low[v[t]]>=num[cur])
{
sum[cur]++;
flag[cur]=1;
}
if(cur==root&&child>=2)
{
sum[cur]++;
flag[cur]=1;
}
}
else
{
if(v[t]!=father)
{
low[cur]=min(low[cur],num[v[t]]);
}
}
t=next[t];
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
first[i]=-1;
sum[i]=1;
}
for(int i=1;i<=m;i++)
{
cin>>u[i]>>v[i];
w[i]=1;
}
for(int i=1+m;i<=2*m;i++)
{
u[i]=v[i-m];
v[i]=u[i-m];
w[i]=w[i-m];
}
for(int i=1;i<=2*m;i++)
{
next[i]=first[u[i]];
first[u[i]]=i;
}
root=1;
dfs(1,root);
for(int i=1;i<=n;i++)
{
if(flag[i]==1)
{
cout<<i<<' '<<sum[i]<<endl;
}
}
return 0;
}
0 0
- 查找图的割点 邻接表优化
- 图的割点 邻接表和邻接矩阵的分析
- 无向图关键点(dfs邻接阵),割点
- 查找图的割点的算法 基本算法
- 图的割点
- 图的割点
- 图的割点
- 图的割点
- 图的割点和割边
- 图的割点和割边
- 图的割点,割边
- 【模板】图的割点
- 求图的割点
- 图的割边、割点、块、缩点问题
- 图的割点与割边学习笔记
- 无向连通图的割点与割边
- 图的割点与割边实现
- 图的割点和割边-裸题
- warning: could not load any Objective-C class information. This will significantly reduce the qualit
- 关系规范化之函数依赖集闭包和属性集X对于函数依赖集F的闭包
- (2.2.7.3)MyEclipse + Maven开发Web工程的详细配置过程
- 2016-04-22jdbc工具类优化,外部资源加载,类加载器,Properties
- magic_quotes_gpc,magic_quotes_runtime,magic_quotes_sybase 三个方法的区别
- 查找图的割点 邻接表优化
- 利用jquery写无缝循环滑动的轮播图
- StringBuffer和StringBuilder的区别
- 轻量级Lua IDE ZeroBrane Studio 的使用技巧和汉化
- intellj idea使用心得
- android 权限
- uva 458 The Decoder
- Mac 安装和卸载 Mysql5.7.11 的方法
- hdu 1247 Hat’s Words