zoukankan      html  css  js  c++  java
  • hdu 畅通工程

    http://acm.hdu.edu.cn/showproblem.php?pid=1863

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 #include <algorithm>
     5 #define maxn 200
     6 using namespace std;
     7 const int inf=1<<30;
     8 
     9 int g[maxn][maxn];
    10 int dis[maxn];
    11 bool vis[maxn];
    12 int sum;
    13 int n,m,a,b,c;
    14 bool flag=true;
    15 
    16 void prim()
    17 {
    18     memset(vis,false,sizeof(vis));
    19     for(int i=1; i<=n; i++)  dis[i]=g[1][i];
    20     dis[1]=0;
    21     vis[1]=true;
    22     flag=true;
    23     for(int i=1; i<n; i++)
    24     {
    25         int m=inf,x;
    26         for(int y=1; y<=n; y++) if(!vis[y]&&dis[y]<m) m=dis[x=y];
    27         if(m==inf) {flag=false; break;}
    28         sum+=m;
    29         vis[x]=true;
    30         for(int y=1; y<=n; y++) if(!vis[y]&&dis[y]>g[x][y]) dis[y]=g[x][y];
    31     }
    32 }
    33 
    34 int main()
    35 {
    36     while(scanf("%d%d",&m,&n)!=EOF)
    37     {
    38         if(m==0) break;
    39         for(int i=0; i<=n; i++)
    40         {
    41             for(int j=0; j<=n; j++)
    42             {
    43                 if(i==j) g[i][j]=0;
    44                 else
    45                 g[i][j]=g[j][i]=inf;
    46             }
    47         }
    48         for(int i=0; i<m; i++)
    49         {
    50             scanf("%d%d%d",&a,&b,&c);
    51             g[a][b]=g[b][a]=c;
    52         }
    53         sum=0;
    54         flag=true;
    55         prim();
    56         if(!flag) printf("?
    ");
    57         else
    58         printf("%d
    ",sum);
    59     }
    60     return 0;
    61 }
    View Code
  • 相关阅读:
    Oracle基础操作
    Linux的常用命令
    Javascript 上课笔记
    Linux操作指令
    css样式分类
    DW
    标准sql执行顺序
    Mysql数据库
    模拟课----需求文本
    php 发送邮件
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3665053.html
Copyright © 2011-2022 走看看