记录编号 60298 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 [NOI 2011]道路修建 最终得分 100
用户昵称 Gravatarcstdio 是否通过 通过
代码语言 C++ 运行时间 6.878 s
提交时间 2013-05-21 21:09:21 内存使用 24.25 MiB
显示代码纯文本
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cstring>
#define F_I "noi2011_road.in"
#define F_O "noi2011_road.out"
using namespace std;
typedef long long ll;
const ll Nx=1000010;
ll N,f[Nx],Ans,Pr[Nx],W[Nx];
class Node{
public:
	ll n,w;
	Node *pr;
}*Adj[Nx];
class Queue{
public:
	ll h,t,li[Nx];
	void bfs(){
		h=t=1;
		li[t++]=1;
		while(h<t){
		ll H=li[h++];
			f[H]=1;
			for(Node *p=Adj[H];p;p=p->pr)
				if(f[p->n]==0){
					li[t++]=p->n;
					Pr[p->n]=H;
					W[p->n]=p->w;
				}
		}
		while(--t)
			f[Pr[li[t]]]+=f[li[t]];
	}
}Q;
void add(int u,int v,int w){
Node *p=new Node;
	p->n=v,p->w=w;
	p->pr=Adj[u];
	Adj[u]=p;
}
void init(){
ll i,u,v,w;
	scanf("%lld",&N);
	memset(Adj,0,sizeof(Adj));
	for(i=1;i<N;i++){
		scanf("%lld%lld%lld",&u,&v,&w);
		add(u,v,w);
		add(v,u,w);
	}
}
int main(){
freopen(F_I,"r",stdin);
freopen(F_O,"w",stdout);
	init();
	
	Q.bfs();
	
	for(int i=2;i<=N;i++)
		Ans+=W[i]*abs(N-f[i]-f[i]);
	cout<<Ans<<endl;
	
	return 0;
}