求助巨佬
查看原帖
求助巨佬
359430
江户川コナン楼主2021/8/23 18:26

求助大佬!WA了6个点

代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn=105;
int fa[maxn],c[maxn],n,ans=0,mx=0,u,v;
map<int,int> mp;
int get(int x){
    int s=1;
    while(x!=1){
        s++;
        x=fa[x];
    }
    return s;
}
int zjggzx(int u,int v){
    if(fa[u]==fa[v]){
        return fa[u] ;
    }
    int len1=c[u],len2=c[v];
    if(len1!=len2){
        if(len1<len2){
            for(int i=1;i<=len2-len1;i++){
                v=fa[v];
            }
        }else{
            for(int i=1;i<=len1-len2;i++){
                u=fa[u];
            }
        }
    }
    return zjggzx(fa[u],fa[v]);
}
int main(){
    cin>>n;
    for(int i=1;i<n;i++){
        int x,y;
        cin>>x>>y;
        //G[x].push_back(y);
        fa[y]=x;
    }
    cin>>u>>v;
    //int ans=zjggzx(u,v);
    for(int i=1;i<=n;i++){
        c[i]=get(i);
        mx=max(mx,c[i]);
        mp[c[i]]++;
    }
    cout<<mx<<endl;
    mx=0;
    for(auto i:mp){
        //cout<<i.first<<" "<<i.second<<endl;
        mx=max(mx,i.second);
    }
    cout<<mx<<endl;
    int zx=zjggzx(u,v);
    while(u!=zx){
        ans+=2;
        u=fa[u];
    }
    while(v!=zx){
        ans++;
        v=fa[v];
    }
    cout<<ans<<endl;
    return 0;
}

恳请各位巨佬/神犇指点迷津

2021/8/23 18:26
加载中...