求助qwq
查看原帖
求助qwq
245459
liuchenyi0203楼主2022/2/6 21:56

先看看我的代码

// LG-P1364.cpp
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=5e5+5;
const ll INF=0x3f;
inline int read(){
	int s=0,w=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-')
			w=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		s=s*10+ch-'0';
		ch=getchar();
	}
	return s*w;
}
int n,pos;
int sz[MAXN],vis[MAXN],dist[MAXN];
int a[MAXN];
ll ans,sum;
vector<int> edge[MAXN];
void dfs(int rt,int d){
	int u=rt;
	sz[u]=a[u];
	vis[u]=1;
	dist[u]=d;
	ll cnt=0;
	for(int i=0;i<edge[u].size();i++){
		int v=edge[u][i];
		if(vis[v])
			continue;
		dfs(v,d+1);
		sz[u]+=sz[v];
		cnt=max(cnt,1LL*sz[v]);
	}
	cnt=max(cnt,sum-sz[u]);
	if(cnt<ans||(cnt==ans&&u<pos)){
		pos=u;
		ans=cnt;
	}
	return ;
}

int init(){
	n=read();
	for(int i=1;i<=n;i++){
		int w,x,y;
		w=read(),x=read(),y=read();
		a[i]=w;
		sum+=a[i];
		if(x!=0){
			edge[i].push_back(x);
			edge[x].push_back(i);
		}
		if(y!=0){
			edge[i].push_back(y);
			edge[y].push_back(i);
		}
	}
}
int print(){
	ans=INF;
	pos=1;
	dfs(1,0);
	for(int i=1;i<=n;i++)
		vis[i]=0;
	dfs(pos,0);
	ans=0;
	for(int i=1;i<=n;i++){
		ans+=dist[i]*a[i];
	}
}
int main(){
	init();
	print();
	cout<<ans<<endl;
	return 0;
}

我是真不知道哪里错了,调了1小时

希望有dalao指出错误
3 4 5WA掉了

2022/2/6 21:56
加载中...