wa#1 求助大佬
查看原帖
wa#1 求助大佬
246331
mystic_qwq楼主2023/11/13 22:05
n,dis,dep,wid[101],maxw,x,y;
_Bool t[101][101],vis[101][101];
void dfs1(r,depth){
  for(int i=1;i<=n;++i)
    if(t[r][i]&&!vis[i][r])
      vis[r][i]=1,dfs1(i,depth+1),vis[r][i]=0;
  dep=depth>dep?depth:dep;
}
void dfs2(r,depth){
  ++wid[depth];
  for(int i=1;i<=n;++i)
    if(t[r][i]&&!vis[i][r])
      vis[r][i]=1,dfs2(i,depth+1),vis[r][i]=0;
}
void init(){
  for(int i=1;i<=n;++i)
    maxw=wid[i]>maxw?wid[i]:maxw;
}
void dfs3(p,step){
  //printf("[p,step,y]: %d %d %d\n",p,step,y);
  if(p==y){printf("%d",step);return;}
  else for(int i=1;i<=n;++i)
    if(t[p][i]&&!vis[i][p])
      vis[p][i]=1,dfs3(i,step+(i<p?2:1)),vis[p][i]=0;
}
main(){
  scanf("%d",&n);
  for(int i=0;i<n-1;++i){
    int u,v;scanf("%d%d",&u,&v);
    t[u][v]=t[v][u]=1;
  }
  scanf("%d%d",&x,&y);
  dfs1(1,1);
  dfs2(1,1),init();
  printf("%d\n%d\n",dep,maxw);
  dfs3(x,0);
}

2023/11/13 22:05
加载中...