#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int mp[1005][1005];
vector<int> path;
int cnt[1050];
bool vis[1050] ;
int n,m;
int x,y,ans = 0,flag = 0;
void dfs(int x){
if(x == y){
++ flag;
for(int i = 1;i < path.size();i ++){
++ cnt[path[i]];
}
return;
}
for(int i = 1;i <= n;i ++){
if(mp[x][i] && vis[i] == 0){
path.push_back(i),vis[i] = 1;
dfs(i);
path.pop_back(),vis[i] = 0;
}
}
}
int main()
{
cin>>n>>m;
for(int i = 1;i <= m;i ++){
cin>>x>>y;
mp[x][y] = 1;
mp[y][x] = 1;
}
cin>>x>>y;
vis[x] = 1;;
dfs(x);
if(flag == 0) cout<<"-1"<<endl;
else{
for(int i = 1;i <= n;i ++){
if(cnt[i] == flag){
++ ans;
}
}
cout<<ans<<endl;
}
return 0;
}
危险系数 (dfs 求割点个数)
猜你喜欢
转载自blog.csdn.net/weixin_41988889/article/details/89578368
今日推荐
周排行