社区讨论

大佬们我错哪了 找不出思密达 求助!!!

P2052[NOI2011] 道路修建参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mhz49ebh
此快照首次捕获于
2025/11/15 01:13
3 个月前
此快照最后确认于
2025/11/16 13:47
3 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int n,idx=0;
long long int ans,e[2*N],ne[2*N],h[2*N],sz[N],w[2*N];
bool st[N]={0};
void add(int a,int b,int c)
{
e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++; 
}
int dfs(int u)
{
	st[u]=true;
	sz[u]=1;
	for(int i=h[u];i!=-1;i=ne[i])
	{
		int j=e[i];
		if(!st[j])
		{
			st[j]=true;
			int s=dfs(j);
			sz[u]+=s;
				long long cost=w[i]*abs(s-(n-s));
		ans+=cost;
		}
	
	}
	return sz[u];
}
	
int main()
{
	memset(h,-1,sizeof(h));
	cin>>n;
	for(int i=1;i<=n-1;i++)
	{
		int a,b,c;
		cin>>a>>b>>c;
		add(a,b,c),add(b,a,c);
	}
	cout<<ans;
	return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...