F - 檢查站點 FZU - 2195
在山上一共有N個站點需要檢查,檢查員從山頂出發去各個站點進行檢查,各個站點間有且僅有一條通路,檢查員下山前往站點時比較輕鬆,而上山時卻需要額外的時間,問最後檢查員檢查完所有站點時所需要的額外時間最少是多少。
Input
包含多組數據 每組數據輸入第一行爲一個整數N 表示站點個數(1<=N<=100000),接下去N-1 行 每行3個整數 x,y,z(1<=z<=10000) 檢查站x爲檢查站y的父節點,x,y之間有一條通路,從y到x需要額外z的時間。(父節點在子節點上方,山頂固定標號爲1)
Output
輸出一行一個整數表示最少需要花費的額外時間。
Sample Input
6
1 2 1
2 4 1
1 3 1
3 5 1
3 6 1
Sample Output
3
水題,可以發現每條路都要走過所以只要找到最長的路就好了。
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct stu{
int sum;
stu(){
sum=0;
}
};
int main()
{
stu s[200000];
int n,x,y,z;
while(~scanf("%d",&n))
{
int max=0,ans=0;
for(int i=1;i<n;i++)
{
scanf("%d%d%d",&x,&y,&z);
ans=ans+z;
s[y].sum=s[x].sum+z;
if(max<s[y].sum)max=s[y].sum;
}
printf("%d\n",ans-max);
}
return 0;
}