F - 檢查站點 FZU - 2195

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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章