hdu 1879 继续畅通工程

感觉自己对kruscal的算法掌握的比较熟了,这题就没有用2种解法解答了.

因为两种解法都是用自己写的模板来的,复制也没啥意思.

这题就是根据读入的数据,如果是修建状态是1的话,说明不用修建了,就将权重置为1,其他套模板;

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 using namespace std;
 5 #define maxn 105
 6 #define INF 0x3f3f3f3f
 7 int mincost[maxn];
 8 int cost[maxn][maxn];
 9 bool visit[maxn];
10 int n;
11 int prim()
12 {
13     int res = 0, index = 1,min_cost;
14     for(int i = 1;i <= n;i++)
15         mincost[i] = cost[i][1];
16     mincost[1] = 0;
17     memset(visit,false,sizeof(visit));
18     visit[1] = true;
19     for(int i = 1 ; i <= n; i++)
20     {
21         min_cost = INF;
22         for(int j = 1; j <= n; j++)
23         {
24             if(mincost[j]<min_cost && !visit[j])
25             {
26                 min_cost = mincost[j];
27                 index = j;
28             }
29         }
30         visit[index] = true;
31         for(int k = 1; k <= n; k++)
32         {
33             if(!visit[k] && cost[k][index] < mincost[k])
34                 mincost[k] = cost[k][index] ;
35 
36         }
37 
38     }
39     for(int i = 1 ;i <=n;i++)
40         res += mincost[i];
41     return res;
42 }
43 int main()
44 {
45     //freopen("1879.txt","r",stdin);
46     int a,b,c,d;
47     while(~scanf("%d",&n),n)
48     {
49         memset(visit,false,sizeof(visit));
50         memset(cost,INF,sizeof(visit));
51         for(int i = 0 ;i< n*(n-1)/2 ; i++)
52         {
53          scanf("%d %d %d %d",&a,&b,&c,&d);
54          if(d == 0)
55             cost[a][b]=cost[b][a] = c;
56          else
57             cost[a][b]=cost[b][a] = 0;
58         }
59         printf("%d\n",prim());
60     }
61     return 0;
62 }
View Code

 

转载于:https://www.cnblogs.com/xiaoniuniu/p/4392784.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值