hdu 1879 继续畅通工程  克鲁斯

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 typedef struct node
 5 {
 6     int u,v,w;
 7 }edge;
 8 edge e[10005];
 9 int dg[105];
10 void init(int n)
11 {
12     int i;
13     for(i = 1;i <=n ;i++)
14     dg[i] = i;
15 }
16 int cmp(const void *a,const void *b)
17 {
18     return (*(struct node *)a).w-(*(struct node *)b).w;
19 }
20 int find(int x)
21 {
22     if(x != dg[x])
23     {
24         dg[x] = find(dg[x]);
25     }
26     return dg[x];
27 }
28
29 int main()
30 {
31     int n,i,j,leap,ans,u,v;
32     while(scanf("%d",&n)&&n)
33     {
34         int t = n*(n-1)/2;
35         ans = 0;
36         for(i = 1;i <= t;i++){
37             scanf("%d%d%d%d",&e[i].u,&e[i].v,&e[i].w,&leap);
38             if(leap)
39             e[i].w = 0;
40         }
41
42         qsort(e+1,t,sizeof(edge),cmp);
43         init(n);
44
45         for(i = 1;i <= t;i++)
46         {
47             u = find(e[i].u);
48             v = find(e[i].v);
49             if(u != v)
50             {
51                 dg[u] = v;
52                 ans += e[i].w;
53             }//到这里就卡主了= =。。。
54         }
55         printf("%d\n",ans);
56     }
57     return 0;
58 }

View Code

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 typedef struct node
 5 {
 6     int u,v,w;
 7 }edge;
 8 edge e[10005];
 9 int dg[105];
10 void init(int n)
11 {
12     int i;
13     for(i = 1;i <=n ;i++)
14     dg[i] = i;
15 }
16 int cmp(const void *a,const void *b)
17 {
18     return (*(struct node *)a).w-(*(struct node *)b).w;
19 }
20 int find(int x)
21 {
22     if(x != dg[x])
23     {
24         dg[x] = find(dg[x]);
25     }
26     return dg[x];
27 }
28
29 int main()
30 {
31     int n,i,j,leap,ans,u,v;
32     while(scanf("%d",&n)&&n)
33     {
34         int t = n*(n-1)/2;
35         ans = 0;
36         for(i = 1;i <= t;i++){
37             scanf("%d%d%d%d",&e[i].u,&e[i].v,&e[i].w,&leap);
38             if(leap)
39             e[i].w = 0;
40         }
41
42         qsort(e+1,t,sizeof(edge),cmp);
43         init(n);
44
45         for(i = 1;i <= t;i++)
46         {
47             u = find(e[i].u);
48             v = find(e[i].v);
49             if(u != v)
50             {
51                 dg[u] = v;
52                 ans += e[i].w;
53             }
54         }
55         printf("%d\n",ans);
56     }
57     return 0;
58 }

1233 还是畅通工程 prim

View Code

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 int map[105][105];
 5 int vis[105];
 6 int d[105];
 7 int prime(int n)
 8 {
 9     int i,j,primer,ans,min;
10     memset(vis,0,sizeof(vis));
11
12     ans = 0;
13     for(i = 2;i <= n;i++)
14     d[i] = map[1][i];
15     vis[1] = 1;
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],primer = j;
24         }
25         ans += min;
26         vis[primer] = 1;
27         for(j = 2;j <= n;j++)
28         if(d[j] > map[primer][j] && !vis[j])
29         d[j] = map[primer][j];
30     }
31     return ans;
32 }
33 int main()
34 {
35     int n,w,i,j,leap,ans,u,v;
36     while(scanf("%d",&n)&&n)
37     {
38         int t = n*(n-1)/2;
39         ans = 0;
40
41         for(i = 1;i <= n;i++)
42             for(j = 1;j <= n;j++)
43             map[i][j] = 0x7fffffff;
44
45         for(j = 1;j <= n;j++)
46         map[j][j] = 0;
47
48         for(i = 1;i <= t;i++){
49             scanf("%d%d%d",&u,&v,&w);
50             if(map[u][v]>w)
51             map[u][v] = map[v][u] = w;
52         }
53         ans = prime(n);
54         printf("%d\n",ans);
55     }
56     return 0;
57 }

kru

View Code

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 typedef struct node
 5 {
 6     int u,v,w;
 7 }edge;
 8 edge e[10005];
 9 int set[105];
10 int cmp(const void *a,const void *b)
11 {
12     return (*(struct node*)a).w-(*(struct node*)b).w;
13 }
14 int find(int x)
15 {
16     if(x != set[x])
17     set[x] = find(set[x]);
18 }
19 void merge(int x,int y)
20 {
21     set[x] = y;
22 }
23 void init(int n)
24 {
25     int i;
26     for(i = 1;i <= n;i++)
27     set[i] = i;
28 }
29 int main()
30 {
31     int n,w,i,j,leap,ans,u,v;
32     while(scanf("%d",&n)&&n)
33     {
34         int t = n*(n-1)/2;
35         ans = 0;
36
37         for(i = 1;i <= t;i++){
38             scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);
39         }
40         qsort(e+1,t,sizeof(edge),cmp);
41         init(n);
42
43         for(i = 1;i <= t;i++)
44         {
45             u = find(e[i].u);
46             v = find(e[i].v);
47             if(u != v)
48             {
49                 ans += e[i].w;
50                 merge(u,v);
51             }
52         }
53
54         printf("%d\n",ans);
55     }
56     return 0;
57 }

1863  畅通工程  克鲁斯

View Code

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 typedef struct node
 5 {
 6     int u,v,w;
 7 }edge;
 8 edge e[10005];
 9 int set[105];
10 int cmp(const void *a,const void *b)
11 {
12     return (*(struct node*)a).w-(*(struct node*)b).w;
13 }
14 int find(int x)
15 {
16     if(x != set[x])
17     set[x] = find(set[x]);
18 }
19 void merge(int x,int y)
20 {
21     set[x] = y;
22 }
23 void init(int n)
24 {
25     int i;
26     for(i = 1;i <= n;i++)
27     set[i] = i;
28 }
29 int main()
30 {
31     int n,w,i,j,leap,ans,u,v,m;
32     while(scanf("%d %d",&n,&m)&&n)
33     {
34         init(m);
35         ans = 0;
36         for(i = 1;i <= n;i++)
37         scanf("%d %d %d",&e[i].u,&e[i].v,&e[i].w);
38
39         qsort(e+1,n,sizeof(edge),cmp);
40         for(i = 1;i <= n;i++)
41         {
42             u = find(e[i].u);
43             v = find(e[i].v);
44             if(u != v)
45             {
46                 merge(u,v);
47                 ans += e[i].w;
48             }
49         }
50
51         int t;
52         t = find(1);
53         leap = 1;
54         for(i = 2;i <= m;i++)
55         {
56             set[i] = find(i);
57             if(t != set[i])
58             {
59                 leap = 0;
60                 break;
61             }
62         }
63
64
65
66         if(leap)
67         printf("%d\n",ans);
68         else
69         puts("?");
70     }
71     return 0;
72 }

转载于:https://www.cnblogs.com/0803yijia/archive/2012/08/06/2625704.html

最小生成树 HDU 各种畅通工程的题,prim和kru的模板题相关推荐

  1. HDU 1863畅通工程(最小生成树)(prim算法)

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  2. HDU 1875 畅通工程再续 (最小生成树)

    畅通工程再续 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  3. HDU 1863 畅通工程

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  4. hdu 1874 畅通工程续(求最短距离,dijkstra,floyd)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1874 /************************************************* ...

  5. Hdu1233 最小生成树_还是畅通工程

    某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通 (但不一定有直接的公路相连,只要能间接通过公路可达即 ...

  6. [kuangbin带你飞]专题六 最小生成树 L - 还是畅通工程 (简单最小生成树)

    L - 还是畅通工程 题目链接:https://vjudge.net/contest/66965#problem/L 题目: 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府&qu ...

  7. HDOJ 1874 HDU 1874 畅通工程续 ACM 1874 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址:          http://acm.hdu.edu.cn/showproblem.php?pid=1874 ...

  8. HDU 1874 畅通工程续 2008浙大研究生复试热身赛(2)

    畅通工程续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  9. HDU 1874 畅通工程续

    畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  10. HDOJ 1875 HDU 1875 畅通工程再续 ACM 1875 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址:          http://acm.hdu.edu.cn/showproblem.php?pid=1875 ...

最新文章

  1. 一台服务器两个mysql_在一台服务器上安装两个或多个mysql的实现步骤_MySQL
  2. vue 1.0和vue 2.0的变化和区别
  3. mysql varchar int_MySQL中int、char、varchar的性能浅谈
  4. Wireshark文档阅读笔记-User Datagram Protocol(UDP)
  5. 大一计算机应用的实验报告,大一《计算机应用基础》实验报告1.doc
  6. 计算机电源管理设置,关于电源管理的电源管理计划设置
  7. 黑苹果 电脑关机是因为发生了问题_【电脑常识】常见的电脑误区,你中了几点?...
  8. php显示网络图片,PHP在服务器端怎么显示图片呢?
  9. 2016年408考研算法题
  10. bzoj 1260 (区间dp)
  11. HDU 6232 Confliction
  12. 算法竞赛零散知识点记录
  13. python测试工具--nose简介
  14. sqlserver 查看服务器名称以及sql语句跨服务器查询设置
  15. Linux 下安装应用程序
  16. Python VTK numpy数据3D可视化
  17. PDF文件如何转换成txt文本文档
  18. Locust 接口性能测试
  19. ipad能运行python_ipad上可以运行python吗?
  20. unity 通过 dll 传递字符串给python,实现小冰颜值鉴定

热门文章

  1. JefferyZhao教导我们...
  2. 论文分享Why Do Adversarial Attacks Transfer? Explaining Transferability of Evasion and Poisoning Attacks
  3. Google地图 Google Places API中附近搜索,文本搜索,地址搜索,地点详情的简单介绍
  4. Linux学习总结(60)——Linux系统常用命令速查手册
  5. u3d计算向量间夹角
  6. 客户上云究竟为了什么?
  7. Java实现Word转PDF【完整版】
  8. arcengine cliasic code(转)基于ArcGIS Engine + C#实现用户自定义动态电力符号
  9. Lookup Transformation
  10. 散文是指以文字为创作、审美对象的文学艺术体裁