问
查看原帖
问
1252442
lucy2012楼主2024/7/30 16:20

服了,在心有错那里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;
}
2024/7/30 16:20
加载中...