题目要求:求联通图 序号最小的最大割点。
解决方案: 枚举每一个点(除了起点),每一次从头开始搜。
比较出 去掉哪个点 时 能连的最少
一些新stl 知识点
bitset : 百度百科
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <vector>
#include <bitset>
#define ms(x) memset(x,0,sizeof(x))
using namespace std;
const int maxn = 110;
int n, m, sink;
vector<int> g[maxn];
bitset<maxn> vis;
void dfs(int cur)
{
vis[cur] = true;
for(auto i:g[cur])
{
if(!vis[i])
dfs(i);
}
}
int main()
{
while( scanf("%d",&n)&&n )
{
for(int i=1;i<=n;i++)
{
g[i].clear();
}
cin>>sink>>m;
for(int i=0;i<m;i++)
{
int u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
int ans = -1;
int cnt = n+1;
for(int i=1;i<=n;i++)
{
if(i == sink) continue;
vis.reset();
vis[i] = true;
dfs(sink);
int sum = vis.count();
if( sum == n) continue;
if(cnt > sum)
{
ans = i;
cnt = sum;
}
}
cout<<ans<<endl;
}
return 0;
}