• HDU Jungle Roads 1301 最小生成树、


    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1301

    题目大意:输入一个n,表示有n个村庄,然后下面是n-1行,每行开头有两个代表字母和数字,分别表示 起始点和与其相同的村庄的个数。然后就是与其相同的村庄和道路长度,求最小连通值。

    代码

    View Code
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<stdlib.h>
     4 int map[30][30];
     5 int vis[30];
     6 int prim(int n)
     7 {
     8     int ans = 0;
     9     int d[30];
    10     memset(vis,0,sizeof(vis));
    11     int i,j,pos,min;
    12 
    13     vis[1] = 1;
    14     for(i = 2;i <= n;i++)
    15     d[i] = map[1][i];
    16 
    17     for(i =1;i < n;i++)
    18     {
    19         min = 0x7fffffff;
    20         for(j = 2;j <= n;j++)
    21         {
    22             if(min > d[j] && !vis[j])
    23             min = d[j],pos = j;
    24         }
    25 
    26         ans += min;
    27 
    28         vis[pos] = 1;
    29 
    30         for(j = 2;j <= n;j++)
    31         if(d[j] > map[pos][j] && !vis[j])
    32         d[j] = map[pos][j];
    33     }
    34     return ans;
    35 }
    36 int main()
    37 {
    38     int n,i,j,m,count,val,ans;
    39     char s[5],d[5];
    40     while(scanf("%d",&n)&&n)
    41     {
    42         for(i = 1;i <= n;i++)
    43         for(j = 1;j <= n;j++)
    44         map[i][j] = 0x7fffffff;
    45 
    46         for(i = 0;i < n-1;i++)
    47         {
    48             scanf("%s %d",s,&count);
    49             while(count--)
    50             {
    51                 scanf("%s %d",d,&val);
    52                 map[s[0]-'A'+1][d[0]-'A'+1] = map[d[0]-'A'+1][s[0]-'A'+1] = val;
    53             }
    54         }
    55         ans = prim(n);
    56         printf("%d\n",ans);
    57     }
    58     return 0;
    59 }
  • 相关阅读:
    三大高级排序
    三大初级排序算法
    MVC的JsonResult用法
    使用dynamic类型改进反射
    正则指引-括号(3)反向引用
    正则指引-括号(2)引用分组
    正则指引-括号(1)
    正则指引-量词demo
    正则指引-字符组demo
    ASP.NET MVC 分部视图
  • 原文地址:https://www.cnblogs.com/0803yijia/p/2625731.html
Copyright © 2020-2023  润新知