求大佬指正
  • 板块灌水区
  • 楼主LoveYou3000
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/12/22 19:40
  • 上次更新2023/12/22 21:46:55
查看原帖
求大佬指正
1037206
LoveYou3000楼主2023/12/22 19:40

P1395 会议

不知道为什么WA了一个点,麻烦大佬指正

谢谢

#include<bits/stdc++.h>
using namespace std;

const int maxn=5e4;
int n,cnt1[maxn],cnt2[maxn],cnt3[maxn],book[maxn],ans=1<<30,id;
vector<int> e[maxn*2];

void dfs1(int x)
{
	for(int i=0;i<e[x].size();i++)
	{
		if(book[e[x][i]]) continue;
		book[e[x][i]]=1;
		dfs1(e[x][i]);
		cnt1[x]+=cnt1[e[x][i]];
		cnt2[x]+=cnt2[e[x][i]];
	}
	cnt1[x]++;
	cnt2[x]+=cnt1[x]-1;
}

void dfs2(int x)
{
	for(int i=0;i<e[x].size();i++)
	{
		if(book[e[x][i]]) continue;
		book[e[x][i]]=1;
		cnt3[e[x][i]]=cnt3[x]-cnt1[e[x][i]]*2+n;
		dfs2(e[x][i]);
	}
}

int main()
{
	cin>>n;
	int x,y;
	for(int i=1;i<n;i++)
	{
		scanf("%d%d",&x,&y);
		e[x].push_back(y),e[y].push_back(x);
	}
	memset(book,0,sizeof(book));book[1]=1;dfs1(1); 
	cnt3[1]=cnt2[1];
	memset(book,0,sizeof(book));book[1]=1;dfs2(1); 
	for(int i=1;i<=n;i++) if(ans>cnt3[i]) ans=cnt3[i],id=i;
	printf("%d %d",id,ans);
	return 0;
}
2023/12/22 19:40
加载中...