80pts求助
  • 板块P1395 会议
  • 楼主n0ip
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/18 14:55
  • 上次更新2024/7/18 15:40:48
查看原帖
80pts求助
1091322
n0ip楼主2024/7/18 14:55

本人dfs代码如下:(WA on:#1、#9) 记录详情

#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<int> v[100005];
vector<int> z[100005];
int asb[100005];
int minn=100005,minid;
int sum=0;
int flag=0;
void dfs(int x,int fa){
    asb[x]=1;
    int maxnn=0;
    for(int i=0;i<v[x].size();i++){
        int y=v[x][i];      
        if(y==fa) continue;
        dfs(y,x);
        asb[x]+=asb[y];
        maxnn=max(asb[y],maxnn);
    }
    maxnn=max(n-asb[x],maxnn);
    if(minn>maxnn) minn=maxnn,minid=x;
}
void dfs2(int x,int fa,int pop){
    sum+=pop;
    for(int i=0;i<v[x].size();i++){
        int y=v[x][i];      
        if(y==fa) continue;
        dfs2(y,x,pop+1);
    }
}
int main(){
    cin>>n;
    for(int i=1;i<n;i++){
        int x,y,z1;scanf("%d%d",&x,&y);
        v[x].push_back(y);
        v[y].push_back(x);
    }
    dfs(1,0);
    dfs2(minid,0,0);
    cout<<minid<<" "<<sum;
	return 0;
}
2024/7/18 14:55
加载中...