在文本文件input4.txt中给定无向连通图G,判断图G是否存在这样一个顶点V,当V被删除时,该图的其他部分不再连通。如果存在,只需要找出一个这样的顶点,并输出顶点的编号, 如果不存在,则输出”not exist”。
输入:
5 // 表示顶点个数
1 5 // 节点1和5之间有一条边
2 3
2 4
3 5
4 5
输入数据对应的图如下所示:
4
/ \
1 – 5 2
\ /
3
输出:
5
#include <iostream>
using namespace std;
const int N = 1010;
int g[N][N];
int n;
bool fangwen[N];
int x; // 被pass的点
int count; //过程中的总和
void dfs(int t)
{
if (t == x) return;
count ++;
for (int i = 1; i <= n; i ++)
{
if (!fangwen[i] && g[t][i] == 1)
{
fangwen[i] = true;
dfs(i);
fangwen[i] = false;
}
}
}
int main()
{
cin >> n;
int t = n;
while (t --)
{
int a, b;
cin >> a >> b;
g[a][b] = g[b][a] = 1;
}
for (int i = 1; i <= n; i ++)
{
x = i;
if (x != 1) dfs(1);
else dfs(2);
if (count < n - 1)
{
cout << x;
return 0;
}
count = 0;
}
cout << "not exist" <<endl;
return 0;
}