求助,WA on #23
查看原帖
求助,WA on #23
539344
CJ_Fu楼主2024/7/15 11:24

只WA了这一个点,handmade的第一个数据。

#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+3;
vector<int>e[maxn];
int n,siz[maxn],rt,f[maxn],ans=0x3f3f3f3f,dfn[maxn],dfncnt=-1;
void dfs(int u,int fa,int dep){
    siz[u]=1;
    for(int v:e[u]){
        if(v!=fa){
            dfs(v,u,dep+1);
            siz[u]+=siz[v];
        }
    }
    f[1]+=dep;
}
void dfs1(int u,int fa){
    for(int v:e[u]){
        if(v!=fa){
            f[v]=f[u]+siz[1]-2*siz[v];
            dfs1    (v,u);
        }
    }
    if(ans>f[u]){
        ans=f[u];
        rt=u;
    }
}
void dfs2(int u,int fa,int dep){
    dfn[++dfncnt]=u;
    siz[u]=dep;
    for(int v:e[u]){
        if(v!=fa) dfs2(v,u,dep+1);
    }
}
signed main(){
    cin>>n;
    for(int i=1,u,v;i<n;i++){
        cin>>u>>v;
        e[u].emplace_back(v);
        e[v].emplace_back(u);
    }
    dfs(1,0,0);
    dfs1(1,0);
    dfs2(rt,0,0); dfn[++dfncnt]=rt;
    for(int i=1;i<=n/2;i++){
        cout<<dfn[i]<<' '<<dfn[i+n/2]<<'\n';
    }
    return 0;
}
2024/7/15 11:24
加载中...