题目链接: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. 清北学堂 清北-Day1-R1-Count

    题目描述 问有几个无序二元组 (x; y) 满足 xy ≡ 1 (mod P ); 0 ≤ x < P; 0 ≤ y <P.无序二元组是指,如果 P = 10, (3; 7) 和 (7; ...

  2. jmeter测试mysql遇到的问题

    1. 1.防火墙未关 错误: Communications link failure The last packet sent successfully to the server was 0 mil ...

  3. 用sqlplus为oracle创建用户和表空间

    用Oracle自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的, 本文要介绍的是另一种方法就是使用Oracle所带的命令行工具SQLPLUS来创建表空间. 打开S ...

  4. Java_解惑

    书名 ================================================================================================= ...

  5. PHP 命名空间与自动加载机制

    include 和 require 是PHP中引入文件的两个基本方法.在小规模开发中直接使用 include 和 require 没哟什么不妥,但在大型项目中会造成大量的 include 和 requ ...

  6. Redis事务概念

    redis事务与监控 Author:SimpleWu GitHub-redis 在redis中它的事务与批处理非常相似 Redis中的事务(transaction)是一组命令的集合.事务同命令一样都是 ...

  7. Python基础之关于表达式

    初识表达式: 优雅.清晰和务实是python的核心价值观,如果想通过操作和处理一个序列(或其他的可迭代对象)来创建一个新 的列表时可以使用列表解析(List comprehensions)和生成表达式 ...

  8. html 基本指令

    命令: <pre> </pre> 格式化输出 <ol></ol> 有序 HTML 列表:示例: <pre> here is outout & ...

  9. cf1108E2 线段树类似扫描线

    /* 有点像扫描线 思路:从左到右枚举每个点,枚举到点i时,把所有以i为起点的区间的影响删去 再加上以i-1为结尾的区间的影响 */ #include<bits/stdc++.h> usi ...

  10. uva11865 二分流量+最小生成树

    uva好题真多 本题用二分法找flow,把流量小于flow的全部筛掉,剩下的边建立最小树形图,如果权值大于c或者不能建图,那么修改二分边界 上代码,觉得最小树形图的代码很优美 /* 题意:给定n个点, ...