P8604 [蓝桥杯 2013 国 C] 危险系数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+10;
int x[N],y[N],p[N];
int n,m,st,ed;
int find(int n)
{if(p[n]!=n){p[n]=find(p[n]);}return p[n];
}bool check(int u)
{for(int i=1;i<=n;i++){p[i]=i;}for(int i=1;i<=m;i++){if(x[i]==u||y[i]==u)continue;int px=find(x[i]),py=find(y[i]);if(px!=py){p[px]=py;}}return find(st)!=find(ed);
}int main()
{std::ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=m;i++){cin>>x[i]>>y[i];}cin>>st>>ed;for(int i=1;i<=n;i++){p[i]=i;}for(int i=1;i<=m;i++){int px=find(x[i]),py = find(y[i]);if(px!=py)p[px]=py;}if(find(st)!=find(ed)){cout<<-1;return 0;}else{int ans = 0;for(int i=1;i<=n;i++){if(i!=st&&i!=ed){if(check(i))ans++;}}cout<<ans;}return 0;
}