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

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

    View Code
     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<string.h>
     4 #define INIT 0x7ffffff
     5 int Graph[110][110];
     6 int vis[110],dis[110];
     7 int town,road;
     8 int sum;
     9 int count;
    10 void prime()
    11 {
    12     memset(vis,0,sizeof(vis));
    13     memset(dis,INIT,sizeof(dis));
    14     int i,j;
    15     int min;
    16     sum=0;
    17     count=1;
    18     int now;
    19     for(i=1;i<=town;i++)
    20     dis[i]=Graph[1][i];
    21     for(j=2;j<=town;j++)
    22     {
    23         min=INIT;
    24         for(i=2;i<=town;i++)
    25         {
    26             if(min>dis[i]&&vis[i]==0)
    27             {
    28                 min=dis[i];
    29                 now=i;
    30             }
    31         }
    32         if(min!=INIT)
    33         {
    34             count++;
    35             sum+=min;
    36             vis[now]=1;
    37             for(i=1;i<=town;i++)
    38             {
    39                 if(vis[i]==0&&Graph[now][i]!=0&&dis[i]>Graph[now][i])
    40                 dis[i]=Graph[now][i];
    41             }
    42         }
    43         else return;
    44     }
    45 }
    46 int main()
    47 {
    48     int road;
    49     int a,b,c;
    50     while(~scanf("%d",&town),town)
    51     {
    52         road=town*(town-1)/2;
    53         for(int i=1;i<=town;i++)
    54         {
    55             for(int j=1;j<=town;j++)
    56             {
    57                 if(i==j) Graph[i][j]=0;
    58                 else Graph[i][j]=INIT;
    59             }
    60         }
    61         for(int i=1;i<=town;i++)
    62         {
    63             for(int j=i+1;j<=town;j++)
    64             {
    65                 scanf("%d%d%d",&a,&b,&c);
    66                 Graph[a][b]=c;
    67                 Graph[b][a]=c;
    68             }
    69         }
    70         prime();
    71         if(count==town)
    72         printf("%d\n",sum);
    73         else printf("不用考虑?\n");
    74     }
    75 }
    View Code
     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 int root[110];
     4 struct Node
     5 {
     6     int start;
     7     int end;
     8     int len;
     9 }node[5010];
    10 int cmp(const void*x,const void*y)
    11 {
    12     return (*(Node*)x).len>(*(Node*)y).len?1:-1;
    13 }
    14 int find(int x)
    15 {
    16     int r=x;
    17     while(r!=root[r])
    18     r=root[r];
    19     
    20     return r;
    21 }
    22 void merge(int x,int y)
    23 {
    24     int fx,fy;
    25     fx=find(x);
    26     fy=find(y);
    27     if(fx!=fy) root[fx]=fy;
    28 }
    29 int main()
    30 {
    31     int n;
    32     int m;
    33     int k;
    34     int a,b,c;
    35     while(~scanf("%d",&n),n)
    36     {
    37         for(int i=1;i<=n;i++)
    38         root[i]=i;
    39         k=0;
    40         m=n*(n-1)/2;
    41         for(int i=0;i<m;i++)
    42         {
    43             scanf("%d%d%d",&a,&b,&c);
    44             
    45             node[k].start=a;
    46             node[k].end=b;
    47             node[k].len=c;
    48             k++;
    49             
    50         }
    51         int sum=0;
    52         qsort(node,k,sizeof(node[0]),cmp);//node[0]写成node,囧。。。 
    53         for(int i=0;i<k;i++)
    54         {
    55             if(find(node[i].start)!=find(node[i].end))
    56             {
    57                 merge(node[i].start,node[i].end);
    58                 sum+=node[i].len;
    59             }
    60         }
    61         
    62         int count=0;
    63         for(int i=1;i<=n;i++)
    64         root[i]=find(i);
    65         for(int i=1;i<=n;i++)
    66         if(root[i]==i) count++;
    67         if(count>1) printf("DBL\n");
    68         else printf("%d\n",sum);
    69     }
    70 }
  • 相关阅读:
    基本数据类型和包装数据类型
    编程英语多样化(长期更新)
    jdk,jre,jvm,openJdk
    英语句子频率印象流
    单击单选按钮换成图片
    标签注意事项:
    背景图片处理
    天猫导航栏
    百度地图
    两栏布局
  • 原文地址:https://www.cnblogs.com/1114250779boke/p/2636665.html
Copyright © 2011-2022 走看看