• POJ2377


    题目链接:http://poj.org/problem?id=2377

    解题思路:

      Prim算法。

      Warning ! 注意考虑重边 !

      其实就是求最大生成树,没什么好说的,就上面那个坑。

    AC代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 using namespace std;
     4 const int maxn=1005,inf=0x7fffffff;
     5 int cost[maxn][maxn];
     6 int d[maxn];
     7 int vis[maxn];
     8 int main()
     9 {
    10     int N,M;
    11     scanf("%d%d",&N,&M);
    12     int a,b,c;
    13     for(int i=1;i<=N;i++)
    14         for(int j=1;j<=i;j++){
    15             if(i==j)    cost[i][j]=0;
    16             else    cost[i][j]=cost[j][i]=-inf;
    17         }
    18     for(int i=0;i<M;i++){
    19         scanf("%d%d%d",&a,&b,&c);
    20         if(cost[a][b]>-inf){
    21             if(cost[a][b]<c)    cost[a][b]=cost[b][a]=c;
    22         }
    23         else    cost[a][b]=cost[b][a]=c;
    24     }
    25     for(int i=1;i<=N;i++){
    26         d[i]=-inf;
    27         vis[i]=0;
    28     }
    29     d[1]=0;
    30     long long res=0;
    31     while(1){
    32         int v=-1;
    33         for(int u=1;u<=N;u++){
    34             if(!vis[u]&&(v==-1||d[u]>d[v])) v=u;
    35         }
    36         if(v==-1)   break;
    37         vis[v]=1;
    38         res+=d[v];
    39         for(int u=1;u<=N;u++){
    40             d[u]=max(d[u],cost[v][u]);
    41         }
    42     }
    43     if(res<0)   printf("-1
    ");
    44     else    printf("%lld
    ",res);
    45     return 0;
    46 }
    “这些年我一直提醒自己一件事情,千万不要自己感动自己。大部分人看似的努力,不过是愚蠢导致的。什么熬夜看书到天亮,连续几天只睡几小时,多久没放假了,如果这些东西也值得夸耀,那么富士康流水线上任何一个人都比你努力多了。人难免天生有自怜的情绪,唯有时刻保持清醒,才能看清真正的价值在哪里。”
  • 相关阅读:
    python排序算法的实现-插入
    python排序算法的实现-选择
    python排序算法的实现-冒泡
    python数据结构之图深度优先和广度优先
    python数据结构之图的实现
    python数据结构之二叉树遍历的实现
    python数据结构之二叉树的实现
    python数据结构之栈、队列的实现
    让淘宝链接在微信中分享,GO
    解决git 不同branch 下node_moudes不同步的问题
  • 原文地址:https://www.cnblogs.com/Blogggggg/p/7294565.html
Copyright © 2020-2023  润新知