POJ,3177 Redundant Paths
2017-05-08 18:27
337 查看
题意:奶牛要在n个牧场中转移,奶牛们厌倦了只有一条路可以走,所以请你来加最少的路,让牧场之间不止有一条固定的通路。
思路:构造双连通图的问题,可以看下面的文章了解一下概念:
https://www.byvoid.com/zhs/blog/biconnect
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
#define MAX 5000
bool Map[MAX+10][MAX+10],vis[MAX+10];
int low[MAX+10],dfn[MAX+10],value[MAX+10];
int n,m;
int c=0;
void dfs(int u,int pre)
{
vis[u]=1;
low[u]=dfn[u]=++c;
for(int i=1;i<=n;i++)
{
if(Map[u][i])
{
if(!vis[i])
{
dfs(i,u);
low[u]=min(low[u],low[i]);
}
else if(i!=pre)
low[u]=min(low[u],dfn[i]);
}
}
}
int main()
{
cin.sync_with_stdio(false);
int temp1,temp2;
while(cin>>n>>m)
{
memset(Map,0,sizeof(Map));
while(m--)
{
cin>>temp1>>temp2;
Map[temp1][temp2]=Map[temp2][temp1]=1;
}
memset(vis,0,sizeof(vis));memset(low,0,sizeof(low));memset(dfn,0,sizeof(dfn));memset(value,0,sizeof(value));
c=0;
dfs(1,1);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(Map[i][j])
if(low[i]!=low[j])
{
value[low[j]]++;
}
int ans=count(value,value+n+1,1);
cout<<(ans+1)/2<<'\n';
}
return 0;
}
思路:构造双连通图的问题,可以看下面的文章了解一下概念:
https://www.byvoid.com/zhs/blog/biconnect
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
#define MAX 5000
bool Map[MAX+10][MAX+10],vis[MAX+10];
int low[MAX+10],dfn[MAX+10],value[MAX+10];
int n,m;
int c=0;
void dfs(int u,int pre)
{
vis[u]=1;
low[u]=dfn[u]=++c;
for(int i=1;i<=n;i++)
{
if(Map[u][i])
{
if(!vis[i])
{
dfs(i,u);
low[u]=min(low[u],low[i]);
}
else if(i!=pre)
low[u]=min(low[u],dfn[i]);
}
}
}
int main()
{
cin.sync_with_stdio(false);
int temp1,temp2;
while(cin>>n>>m)
{
memset(Map,0,sizeof(Map));
while(m--)
{
cin>>temp1>>temp2;
Map[temp1][temp2]=Map[temp2][temp1]=1;
}
memset(vis,0,sizeof(vis));memset(low,0,sizeof(low));memset(dfn,0,sizeof(dfn));memset(value,0,sizeof(value));
c=0;
dfs(1,1);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(Map[i][j])
if(low[i]!=low[j])
{
value[low[j]]++;
}
int ans=count(value,value+n+1,1);
cout<<(ans+1)/2<<'\n';
}
return 0;
}
相关文章推荐
- POJ 3177 Redundant Paths 无向图边双联通基础题
- POJ 3177 Redundant Paths (双连通分量Tarjan算法)
- POJ 3177 Redundant Paths (tarjan bcc)
- POJ 3177 Redundant Paths
- POJ 3177--Redundant Paths【无向图添加最少的边成为边双连通图 && tarjan求ebc && 缩点构造缩点树】
- POJ 3177 Redundant Paths
- POJ 3177 Redundant Paths
- POJ 3177 Redundant Paths(Tarjan Algorithm求边双连通)
- 【边双连通 && 加几条边变成边双连通】POJ - 3177 Redundant Paths
- POJ 3177 Redundant Paths 有重边的图求桥
- poj 3177 Redundant Paths
- POJ 3352 Road Construction POJ 3177 Redundant Paths(边双连通图 Tarjan+缩点)
- poj 3177 Redundant Paths
- POJ 3177 Redundant Paths
- poj 3177 Redundant Paths
- [poj] 3177 Redundant Paths
- poj 3177 Redundant Paths
- POJ 3177 Redundant Paths
- 【POJ 3177】Redundant Paths(Tarjan求桥、边双连通分量)
- POJ 3177 Redundant Paths (双连通)