[CSP-S模拟测试]:Tree(贪心)

题目描述

给定一颗$n$个点的树,树边带权,试求一个排列$P$,使下式的值最大

$$\sum \limits_{i=1}^{n-1}maxflow(P_i,P_{i+1})$$

其中$maxflow(s,t)$表示从点$s$到点$t$之间的最大流,即从$s$到$t$的路径上最小的边权


输入格式

第一行一个整数$n$,表示点数
下接$n−1$行,每行三个数$u,v,w$表示一条连接点$u$和点$v$权值为$w$的边


输出格式

输出一行一个整数,表示答案


样例

样例输入:

2
1 2 2333

样例输出:

2333


数据范围与提示

对于前$5\%$的数据满足$n\leqslant 8$
对于前$40\%$的数据满足$n\leqslant 200$
对于前$60\%$的数据满足$n\leqslant 2,000$
对于$100\%$的数据满足$n\leqslant 100,000$


题解

我也不是到这是什么玄学神题……

码个对拍惊喜的发现其实就是边权和,然而我考试的时候暴力没打对于是只有$95$分……

证明可以用贪心(有时间再证吧……)

记得开$long\ long$就好了,否则$0$分的哦~

时间复杂度:$\Theta(n)$。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
int n;
long long ans;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<n;i++)
	{
		int w;
		scanf("%d%d%d",&w,&w,&w);
		ans+=w;
	}
	printf("%lld",ans);
	return 0;
}

rp++

posted @ 2019-10-07 12:15  HEOI-动动  阅读(140)  评论(0编辑  收藏  举报