题目链接:http://poj.org/problem?id=1287

题目描述:

请先参考关于prim算法求最小生成树的讲解博客:https://www.cnblogs.com/LJHAHA/p/10051069.html

代码实现:

  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4. #define MAX 100
  5. #define MAXCOST 0x7fffffff
  6.  
  7. int graph[MAX][MAX];
  8.  
  9. int prim(int graph[][MAX], int n)
  10. {
  11. int lowcost[MAX];//lowcost[i]:表示以i为终点的边的最小权值,注意i的起点并不确定
  12. int mst[MAX];//mst[i]:表示对应lowcost[i]的起点
  13. int i, j, min, minid, sum = ;
  14. //我们设V1是起点,进行初始化
  15. for (i = ; i <= n; i++)
  16. {
  17. lowcost[i] = graph[][i];//如果该顶点未与V1相连,lowcost值为MAXCOST
  18. mst[i] = ;//刚开始的时候,对于每一个Vi来说,它的起点都是V1
  19. }
  20. mst[] = ;//当mst[i]=0表示起点i加入MST
  21. for (i = ; i <= n; i++)//执行n-1次,保证V1到达每个顶点的最短边都能够找到
  22. {
  23. min = MAXCOST;
  24. minid = ;//起点Vi到顶点minid的边最短
  25. for (j = ; j <= n; j++)//找出最短的边,用minid记录下该顶点,用min存下最短边
  26. {
  27. if (lowcost[j] < min && lowcost[j] != )
  28. {
  29. min = lowcost[j];
  30. minid = j;
  31. }
  32. }
  33. sum += min;//每找出一条最短边就加到权值中去
  34. lowcost[minid] = ;//当lowcost[i]=0说明以i为终点的边的最小权值=0,也就是表示i点加入了MST
  35. for (j = ; j <= n; j++)
  36. {
  37. if (graph[minid][j] < lowcost[j])
  38. {
  39. lowcost[j] = graph[minid][j];
  40. mst[j] = minid;
  41. }
  42. }
  43. }
  44. return sum;
  45. }
  46.  
  47. int main()
  48. {
  49. int i, j, k, m, n;
  50. int x, y, cost;
  51. while(scanf("%d%d",&m,&n)){
  52. if(m==)
  53. break;
  54. //初始化图G
  55. for (i = ; i <= m; i++)
  56. {
  57. for (j = ; j <= m; j++)
  58. {
  59. graph[i][j] = MAXCOST;
  60. }
  61. }
  62. //构建图G
  63. for (k = ; k <= n; k++)
  64. {
  65. cin >> i >> j >> cost;
  66. if(cost<graph[i][j]){
  67. graph[i][j] = cost;
  68. graph[j][i] = cost;
  69. }
  70. }
  71. //求解最小生成树
  72. cost = prim(graph, m);
  73. //输出最小权值和
  74. cout <<cost << endl;
  75. }
  76. return ;
  77. }

poj-1287 Networking(Prim)的更多相关文章

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

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

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

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

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

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

  4. POJ 1258 Agri-Net(Prim)

    ( ̄▽ ̄)" #include<iostream> #include<cstdio> #include<cmath> #include<algori ...

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

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

  6. POJ.1287 Networking (Prim)

    POJ.1287 Networking (Prim) 题意分析 可能有重边,注意选择最小的边. 编号依旧从1开始. 直接跑prim即可. 代码总览 #include <cstdio> #i ...

  7. POJ 2431 Expedition(探险)

    POJ 2431 Expedition(探险) Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] A group of co ...

  8. ZOJ1372 POJ 1287 Networking 网络设计 Kruskal算法

    题目链接:problemCode=1372">ZOJ1372 POJ 1287 Networking 网络设计 Networking Time Limit: 2 Seconds     ...

  9. c/c++ 用普利姆(prim)算法构造最小生成树

    c/c++ 用普利姆(prim)算法构造最小生成树 最小生成树(Minimum Cost Spanning Tree)的概念: ​ 假设要在n个城市之间建立公路,则连通n个城市只需要n-1条线路.这时 ...

随机推荐

  1. IBM X 3650 M3服务器RAID0设置

    1 进入磁盘整列设置窗口 1.1 开机在提示符页面下按[F1]进入BIOS设置 1.2 依次进入子菜单[System Settings]à[Adapters and UEFI Drivers] 1.3 ...

  2. nginx+php负载均衡集群环境中的session共享方案梳理

    在网站使用nginx+php做负载均衡情况下,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态. 下面罗列几种nginx负载均衡 ...

  3. LeetCode(75):分类颜色

    Medium! 题目描述: 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 ...

  4. 新增 修改,对xx名字或者其他属性做校验判断是否存在

    需求描述:页面输入完xxName和xx编码,点击提交,根据两项内容做重复校验(就是看看数据库里有木有相同的) 解决思路:把这两个东西作为查询条件去查,查到有记录,提示已存在,就不执行新增或者修改操作. ...

  5. hdu1540 区间合并+询问某点的最大连续块

    询问操作需要搞一下 今天被区间合并降智了 /* D a: 摧毁第a个点 Q a:询问a所在的点的块大小 R :修复最后被破坏的点 对于所有的点需要进行一次更新 更新比较容易,tag用来表示区间是否是完 ...

  6. 最小标示法模板 poj1509

    最小标示法:给定一个字符串,不断将其最后一个字符放到开头,最终会得到n个字符串,称这n个字符串循环同构,这些字符串中字典序最小的一个,就是最小表示法 #include<iostream> ...

  7. 解决linux下svn update 产生Node remains in conflict的问题

    提交一个文件 服务器上死活更新不了 是因为有冲突,解决办法:svn revert --depth=infinity /var/SvnProject/APITest 再次执行更新 进有改动的文件夹,更新 ...

  8. Nginx详解五:Nginx基础篇之HTTP请求

    http请求 如今的http请求已经不是每一次请求都进行一次三次握手,可以在请求与相应之后,客户端和服务端不断的发送FIN和ACK包来保持连接的状态,即:长连接 HTTP请求建立在一次TCP连接基础上 ...

  9. Java和C冒泡排序

    Java 示例代码: public class test { public static void main(String[] args) { String str = "321dca5&q ...

  10. paython3-练习

    在文本每行末尾加; f = open(r'D:\test1\1.txt','rb') w = open(r'D:\test1\2.txt','wb') for line in f.readlines( ...