http://poj.org/problem?id=1287

最小生成树模板题类似的还有:poj1258  hdu1233代码几乎一样;

最小生成树详解

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<iostream>
  4. #include<algorithm>
  5. #include<math.h>
  6. #include<map>
  7. #define N 110
  8. #define INF 0xfffffff
  9. using namespace std;
  10.  
  11. int ans, n, m, dist[N], maps[N][N], vis[N];//dist[i]代表当前起点到i的最小距离;
  12.  
  13. void Init()
  14. {
  15. for(int i=; i<=n; i++)
  16. {
  17. dist[i] = INF;
  18. vis[i] = ;
  19. for(int j=; j<=n; j++)
  20. if(i==j)
  21. maps[i][j] = ;
  22. else
  23. maps[i][j] = INF;
  24. }
  25. }
  26.  
  27. void Prim(int start)
  28. {
  29. for(int i=; i<=n; i++)
  30. dist[i] = maps[start][i];
  31. vis[start] = ;
  32. for(int i=; i<=n; i++)
  33. {
  34. int Min = INF, index=-;
  35.  
  36. for(int j=; j<=n; j++)
  37. {
  38. if(vis[j]== && Min>dist[j])
  39. {
  40. Min = dist[j];
  41. index = j;
  42. }
  43. }
  44. if(index == -)break;
  45. vis[index] = ;
  46. ans += Min;
  47. for(int j=; j<=n; j++)
  48. {
  49. if(vis[j]== && maps[index][j] < dist[j])
  50. {
  51. dist[j] = maps[index][j];
  52. }
  53. }
  54. }
  55. }
  56.  
  57. int main()
  58. {
  59. int a, b, c;
  60. while(scanf("%d", &n),n)
  61. {
  62. ans=;
  63. Init();
  64. scanf("%d", &m);
  65. for(int i=; i<m; i++)
  66. {
  67. scanf("%d%d%d", &a, &b, &c);
  68. maps[a][b] = maps[b][a] = min(maps[a][b], c);
  69. }
  70. Prim();
  71. printf("%d\n", ans);
  72. }
  73. return ;
  74. }

prim

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<iostream>
  4. #include<algorithm>
  5. #include<math.h>
  6. #include<map>
  7. #define N 110
  8. #define INF 0xfffffff
  9. using namespace std;
  10.  
  11. int n, f[N], m;
  12.  
  13. struct node
  14. {
  15. int x, y, d;
  16. }a[N*N];
  17.  
  18. int cmp(node p, node q)
  19. {
  20. return p.d < q.d;
  21. }
  22.  
  23. int Find(int x)
  24. {
  25. if(x != f[x])
  26. f[x] = Find(f[x]);
  27. return f[x];
  28. }
  29.  
  30. int main()
  31. {
  32. int ans, px, py;
  33. while(scanf("%d", &n),n)
  34. {
  35. ans=;
  36. for(int i=; i<=n; i++)
  37. f[i] = i;
  38. scanf("%d", &m);
  39. for(int i=; i<m; i++)
  40. {
  41. scanf("%d%d%d", &a[i].x, &a[i].y, &a[i].d);
  42. }
  43. sort(a, a+m, cmp);
  44. for(int i=; i<m; i++)
  45. {
  46. px = Find(a[i].x);
  47. py = Find(a[i].y);
  48. if(px != py)
  49. {
  50. f[px] = py;
  51. ans+=a[i].d;
  52. }
  53. }
  54. printf("%d\n", ans);
  55. }
  56. return ;
  57. }

Kruskal

Networking---poj1287最小生成树的更多相关文章

  1. POJ1287 Networking【最小生成树】

    题意: 给出n个节点,再有m条边,这m条边代表从a节点到b节点电缆的长度,现在要你将所有节点都连起来,并且使长度最小 思路: 这是个标准的最小生成树的问题,用prim的时候需要注意的是他有重边,取边最 ...

  2. POJ 1287 Networking (最小生成树)

    Networking 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/B Description You are assigned ...

  3. POJ 1287 Networking(最小生成树)

    题意  给你n个点 m条边  求最小生成树的权 这是最裸的最小生成树了 #include<cstdio> #include<cstring> #include<algor ...

  4. poj 1287 Networking【最小生成树prime】

    Networking Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7321   Accepted: 3977 Descri ...

  5. POJ 1287:Networking(最小生成树Kruskal)

    id=1287">Networking Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5976   Acce ...

  6. POJ - 1287 Networking 【最小生成树Kruskal】

    Networking Description You are assigned to design network connections between certain points in a wi ...

  7. POJ1287(最小生成树入门题)

    Networking Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7753   Accepted: 4247 Descri ...

  8. POJ 1287 Networking(最小生成树裸题有重边)

    Description You are assigned to design network connections between certain points in a wide area. Yo ...

  9. POJ - 1287 Networking (最小生成树&并查集

    You are assigned to design network connections between certain points in a wide area. You are given ...

  10. 最小生成树练习1(克鲁斯卡尔算法Kruskal)

    今天刷一下水题练手入门,明天继续. poj1861 Network(最小生成树)新手入门题. 题意:输出连接方案中最长的单根网线长度(必须使这个值是所有方案中最小的),然后输出方案. 题解:本题没有直 ...

随机推荐

  1. 【RF库Collections测试】List Should Not Contain Duplicates

    Name:List Should Not Contain DuplicatesSource:Collections <test library>Arguments:[ list_ | ms ...

  2. Unity Shader 修改自定义变量的值

    Properties { _R(,)) = 1.0 _ColorTex("ColorTex (RGB)", 2D) = "red" {} } SubShader ...

  3. 在 Ubuntu 13.10 安装 PyCharm 3.0.1 & Oracle JDK

    由于授权问题,在较新的Linux发行版本中都不再包含Oracle Java,取而代之的是OpenJDK.Ubuntu也是如此. OpenJDK能满足大部分的应用程序运行条件,但PyCharm无法在Op ...

  4. SourceTree 全局忽略及相关问题

    SourceTree 默认使用的是全局缓存配置, 这个配置文件在 SourceTree -> Preferences -> Git -> 全局忽略列表 点击 编辑文件 接下来输入相关 ...

  5. QT之 Hello World

    下载……   我下载的Qt creater 版本为4.2.1,Qt版本为5.8.0 打开QT Creater 1. 新建项目 New Project -> Application -> Q ...

  6. GitHub 在使用命令行 git push 时报错:The requested URL returned error: 403

    使用 git 的命令行向 GitHub 提交的时候,报错: [Young@localhost OtherLang]$ git push origin master error: The request ...

  7. Redis学习笔记--Redis配置文件redis.conf参数配置详解

    ########################################## 常规 ########################################## daemonize n ...

  8. VS自动添加头部注释

    让VS自动生成类的头部注释,只需修改两个文集即可,一下两个路径下个有一个 Class.cs文件 D:\Program Files (x86)\Microsoft Visual Studio 14.0\ ...

  9. nginx 日志文件

    默认日志格式 log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status ...

  10. wpgcms---单片页数据渲染

    单片页数据渲染,使用Twig的标签语法: <h1> {{ contentInfo.title }} </h1> {% autoescape false %} {{ conten ...