求调 自己测样例都错了 但我找不到问题www 题目
#include<bits/stdc++.h>
using namespace std;
vector<int>g[100005];
int n,vis[100005]={0},m,vis2[100005]={0},d,f,ans=0,sum=0,sumn[100005],head=1;
void dfs(int u){
vis[u]=1;
if(u==f){
sum++;
for(int i=1;i<=n;i++){
if(vis[i]) vis2[i]++;
}
memset(vis,0,sizeof(vis));
}else{
for(int i=1;i<=g[u].size();i++){
int v=g[u][i];
if(!vis[v]){
dfs(v);
}
}
}
}
//queue<int>ue;
//
//void bfs(int u){
// ue.push(u);vis2[u]=1;
// while(!ue.empty()){
// u=ue.front();ue.pop();
// for(int i=0;i<g[u].size();i++){
// int v=g[u][i];
// if(!vis2[v]){
// ue.push(v);vis2[v]=1;
// }
// }
// }
//}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v;cin>>u>>v;
g[u].push_back(v);g[v].push_back(u);
}
cin>>d>>f;
dfs(d);
if(sum>0){
for(int i=1;i<=n;i++){
if(vis2[i]==sum) ans++;
}
cout<<ans-1;
}else{
cout<<"-1";
}
return 0;
}