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

       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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值