题目链接:https://vjudge.net/problem/POJ-2421

思路:一些村庄,建一些路,使得所有村庄能相连,而且使得所有路长度之和最短。

题目说了,有些村庄之间已经建了路,说明有些路我们不需要建,那么在预处理的时候

把那些已经建过边的两个村庄的距离赋值为0,那么在跑最小生成树板子的时候就完成了

一些路已经建立的情况。

  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <queue>
  4. using namespace std;
  5.  
  6. const int inf = (int)1e9;
  7. const int N = ;
  8. int g[N][N];
  9. int dis[N];
  10. bool vis[N];
  11. int n;
  12.  
  13. struct node{
  14. int loc;
  15. int v;
  16.  
  17. bool friend operator<(const node& a,const node& b){
  18. return a.v > b.v;
  19. }
  20. };
  21.  
  22. priority_queue<node > que;
  23.  
  24. int prime(){
  25.  
  26. que.push(node{,});
  27. dis[] = ;
  28.  
  29. while(!que.empty()){
  30. int u = que.top().loc;
  31. que.pop();
  32.  
  33. vis[u] = true;
  34.  
  35. for(int v = ; v <= n; v++){
  36. if(!vis[v] && dis[v] > g[u][v]){
  37. dis[v] = g[u][v];
  38. que.push(node{v,dis[v]});
  39. }
  40. }
  41. }
  42.  
  43. int ans = ;
  44. for(int i = ; i <= n; i++){
  45.  
  46. // printf("%d ",dis[i]);
  47. ans += dis[i];
  48. }
  49.  
  50. // printf("\n");
  51.  
  52. return ans;
  53. }
  54.  
  55. int main(){
  56.  
  57. scanf("%d",&n);
  58.  
  59. for(int i = ; i <= n; i++)
  60. for(int j = ; j <= n; j++)
  61. scanf("%d",&g[i][j]);
  62.  
  63. for(int i = ; i <= n; i++)
  64. dis[i] = inf;
  65.  
  66. int m;
  67. scanf("%d",&m);
  68.  
  69. int u,v;
  70. for(int i = ; i <= m; i++){
  71. scanf("%d%d",&u,&v);
  72. g[u][v] = g[v][u] = ;//已经有路的村庄
  73. }
  74.  
  75. printf("%d\n",prime());
  76.  
  77. return ;
  78. }

Constructing Roads POJ - 2421的更多相关文章

  1. (最小生成树)Constructing Roads -- poj -- 2421

    链接: http://poj.org/problem?id=2421 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 2113 ...

  2. Constructing Roads POJ - 2421 (最小生成树)

    思路:首先使用二维数组dis[][]处理输入, 对于已经修好的路,将其对应的dis[i][j]置为零即可.最后再将    所有的dis[][]保存到边结构体中,使用Kruskal算法求得最小生成树. ...

  3. Constructing Roads POJ - 2421 最小生成树板子题

    #include<iostream> #include<cstring> #include<algorithm> using namespace std; ; in ...

  4. POJ 2421 Constructing Roads (最小生成树)

    Constructing Roads Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u ...

  5. POJ 2421 Constructing Roads (最小生成树)

    Constructing Roads 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/D Description There ar ...

  6. POJ - 2421 Constructing Roads 【最小生成树Kruscal】

    Constructing Roads Description There are N villages, which are numbered from 1 to N, and you should ...

  7. POJ 2421 Constructing Roads (Kruskal算法+压缩路径并查集 )

    Constructing Roads Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 19884   Accepted: 83 ...

  8. Constructing Roads——F

    F. Constructing Roads There are N villages, which are numbered from 1 to N, and you should build som ...

  9. Constructing Roads In JGShining's Kingdom(HDU1025)(LCS序列的变行)

    Constructing Roads In JGShining's Kingdom  HDU1025 题目主要理解要用LCS进行求解! 并且一般的求法会超时!!要用二分!!! 最后蛋疼的是输出格式的注 ...

随机推荐

  1. c# WF 第7节 对控件的基本操作

    本节内容: 1:修改控件的大小 2:控件的顺序 3:控件的对齐 4:移动button实例 1: 修改控件的大小 第一种: 第二种 : 一次操作多个控件: 选择一个控件.按住ctrl -- 再选择一个控 ...

  2. Html学习之四(页面布局)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. testNG xml文件详解

    网上看到一篇整理的非常详细的xml文件详解,分享一下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 < ...

  4. 计算机体系结构:量化研究方法(中文第五版)_扫描版_23.5M.pdf

  5. 剑指Offer-13.调整数组顺序使奇数位于偶数前面(C++/Java)

    题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 分析: 这道题做法有很 ...

  6. Fontconfig error: Cannot load config file "infinality/conf.d"

    reference: https://forums.gentoo.org/viewtopic-t-1079210-start-0.html resolved with following method ...

  7. C++ 回调函数的多种用法

    什么是回调函数, 就是以函数指针做参数传递给另一个函数称之为回调函数, 字面意思很简单, 但就这几个字想理解回调函数, 那又很难.因此别就这这字面意思, 只要知道怎么用, 在什么情况下用就行了 什么场 ...

  8. what is variable?

    what is variable? variable:pytorch中的变量,存储tensor,数值会不断变动 在 Torch 中的 Variable 就是一个存放会变化的值的地理位置. 里面的值会不 ...

  9. mybatis报错:Invalid bound statement (not found)

    mybatis报错:Invalid bound statement (not found)的原因很多,但是正如报错提示一样,找不到xml中的sql语句,报错的情况分为三种: 第一种:语法错误 Java ...

  10. 如何配置jdk的本地环境

    在计算机→属性→高级系统设置→高级→环境变量,如图: 第一步:系统变量→新建 JAVA_HOME 变量 . 变量值填写jdk的安装目录(本人是C:\Program Files\Java\jdk1.8. ...