服了,在心有错那里ac了,跑到这一模一样的题9分
代码:
#include<bits/stdc++.h>
using namespace std;
int n,vis[110],cnt,maxx,ans[110],dep,a,b;
vector<int> tree[110];
void d(int x){
cnt++;
ans[cnt]++;
if(cnt>maxx)
maxx=cnt;
for(int i=0;i<tree[x].size();i++){
if(!vis[tree[x][i]]){
vis[tree[x][i]]=1;
d(tree[x][i]);
}
}
cnt--;
return;
}
void dfs(int x){
if(x==b){
if(cnt<maxx)
maxx=cnt;
}
for(int i=0;i<tree[x].size();i++){
if(!vis[tree[x][i]]){
cnt++;
vis[tree[x][i]]=1;
dfs(tree[x][i]);
vis[tree[x][i]]=0;
cnt--;
}
}
return;
}
int main(){
cin>>n;
for(int i=1;i<=n-1;i++){
int u,v;
cin>>u>>v;
tree[u].push_back(v);
tree[v].push_back(u);
}
cin>>a>>b;
vis[1]=1;
d(1);
cout<<maxx<<endl;
dep=maxx;
maxx=1;
for(int i=1;i<=dep;i++){
if(ans[i]>maxx)
maxx=ans[i];
}
cout<<maxx<<endl;
memset(vis,0,sizeof(vis));
cnt=0;
maxx=1e9;
dfs(a);
cout<<maxx;
return 0;
}