求大佬们帮忙看看代码,谢谢大佬
查看原帖
求大佬们帮忙看看代码,谢谢大佬
412042
gyy20081201楼主2022/12/29 20:01
#include<bits/stdc++.h>
#define N 205
using namespace std;
struct node{
	int to=0,nxt=0;
}E[N];
bool vis[N];
int n,head[N],cnt,ans=0;
int wid[N],depp=1,widd=1;
void add(int x,int y){
	E[++cnt].to=y;
	E[cnt].nxt=head[x];
	head[x]=cnt;
}
void dfs(int x,int dep){
	wid[dep]++;
	depp=max(depp,dep);
	for(int i=head[x];i;i=E[i].nxt){
		int v=E[i].to;
		if(v&&!vis[v]){
			vis[v]=1;
			dfs(v,dep+1);
		}
	}
}
int dfs2(int x,int y,int sum){
	if(x==y) return ans+=sum;
	for(int i=head[x];i;i=E[i].nxt){
		int v=E[i].to;
		if(v&&!vis[v]){
			vis[v]=1;
			dfs2(v,y,sum+1);
		}
	}
}
int main(){
	memset(vis,0,sizeof(vis));
	scanf("%d",&n);
	for(int i=1;i<n;i++){
		int u,v;
		scanf("%d%d",&u,&v);
		add(u,v),add(v,u);
	}
	vis[1]=1;
	dfs(1,1);
	for(int i=1;i<=depp;i++)widd=max(widd,wid[i]);
	printf("%d\n%d\n",depp,widd);
	int x,y;
	scanf("%d%d",&x,&y);
	memset(vis,0,sizeof(vis));
	vis[x]=1;
	dfs2(x,1,0);
	ans*=2;
	memset(vis,0,sizeof(vis));
	vis[1]=1; 
	dfs2(1,y,0);
	printf("%d",ans);
}
2022/12/29 20:01
加载中...