您的位置:首页 > 其它

ssl1217-删边【图论,dfs】

2017-12-30 13:25 148 查看

题目

给出一个连通无向图,求最多能删掉多少条边后还是连通图。

输入

4(顶点数) 6(边数)

1 2 (表示一条点1到点2的线)

1 3

1 4

2 3

2 4

3 4

输出

3

dfs解题思路

这道题其实不用dfs更简单,但是毕竟例题还是用一下吧。

首先我们如果到达一个点便标记一下,等到下一次在到这个点时就可以确定这条线是不需要的(因为有其他的方法可以到达)

dfs代码

#include<cstdio>
using namespace std;
int walk[101],a[101][101],x,y,n,m,s;
void dfs(int x)
{
walk[x]=true;//标记已有方法可以到达
for (int i=1;i<=n;i++)
{
if (a[x][i]==true && i!=x)
//如果可以到达
{
a[x][i]=false;
a[i][x]=false;
//标记为已经搜过
if (walk[i]) s++;
//如果有方法可以到达就删掉这条边

4000
else dfs(i);
//不然就搜索
}
}
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
a[x][y]=true;
a[y][x]=true;//表示两点连通
}
dfs(1);//搜索
printf("%d",s);//输出
}


其他解题思路

其实根据推理,输出6-4+1(m-n+1)就可以的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: