您的位置:首页 > 其它

FZU-1295 单源最短路思想+BFS

2015-05-13 20:56 519 查看
       wa了几次,就努力坚持几次。最终我A了,就其原因还是基础不扎实(注意I64d 与lld).
#include <cstdio>
#include <cstdlib>

#include <iostream>

#include <algorithm>

#include <cstring>

#include <climits>

#include <string>

#include <vector>

#include <cmath>

#include <stack>

#include <queue>

#include <set>

#include <map>
using namespace std;

vector<int>tree[100010];

long long cost[100010];

long long h[100010];

int a, b,n;

// long long c;

// long long int sum ;

void DFS(int a)

{

int i;

if(tree[a].empty())return;

int b = tree[a].size();

for(i = 0; i < b; i ++)

{

DFS(tree[a][i]);

if(h[a] < cost[tree[a][i]]+h[tree[a][i]])

{

h[a] = cost[tree[a][i]]+h[tree[a][i]];   //从一条路寻找下去。。

}

}

}

int main()

{

long long int sum ;

long long c;

while(cin>>n)

{

memset(h,0,sizeof(h));

memset(cost, 0,sizeof(cost));

memset(tree, 0, sizeof(tree));

sum = 0;

for(int i = 1; i < n; i ++)

{

//cin>>a>>b>>c;

scanf("%d%d%I64d",&a,&b,&c);       //OJ平台一般都得用I64d。。坑了好多次。。 可以用cin代替scanf,但读入太慢。。

tree[a].push_back(b);

cost[b] = c;

sum += c;

}

DFS(1);

//printf("%d %d\n",sum, h[1]);

cout<<sum-h[1]<<endl;

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: