1. A国没有高速公路,因此A国的交通很困难。政府意识到了这个问题并且计划建造一些高速公路,以至于可以在不离开高速公路的情况下在任意两座城镇之间行驶。
  2. A国的城镇编号为1N, 每条高速公路连接这两个城镇,所有高速公路都可以在两个方向上使用。高速公路可以自由的相互交叉。
  3. A国政府希望尽量减少最长高速公路的建设时间(使建设的最长的高速公路最短),但是他们要保证每个城镇都可以通过高速公路到达任意一座城镇。

Input

第一个输入的数字T,代表着T组样例。

接下来输入一个N, 代表一共有N个城镇。

然后读入一个N*N的矩阵,第i行第j列代表从i到j高速公路的距离。

Output

对于每个测试用例,您应输出一个包含整数的行,该整数是要构建的最长道路的长度,以便连接所有村庄,并且此值最小。

Sample Input

1

3

0 990 692

990 0 179

692 179 0

Sample Output

692

Hint

  1. Huge input,scanf is recommended.

上一道题改了两行,重写main函数就过了,真的弟弟.


  1. #include <set>
  2. #include <map>
  3. #include <cmath>
  4. #include <queue>
  5. #include <bitset>
  6. #include <stack>
  7. #include <vector>
  8. #include <string>
  9. #include <cstdio>
  10. #include <cstdlib>
  11. #include <cstring>
  12. #include <iostream>
  13. #include <algorithm>
  14. #define ll long long
  15. #define mm0(a) memset(a,0,sizeof(a))
  16. #define mm(a,b) memset(a,b,sizeof(a))
  17. #define each(a,b,c) for(int a=b;a<=c;a++)
  18. #define de(x) cout << #x << " " << (x) <<endl
  19. //#define de(x) cout <<""
  20. #define rush() int T;scanf("%d",&T);each(kase,1,T)
  21. #define scan(a,b) scanf("%d%d",&a,&b)
  22. #define fin(a) scanf("%d",&a)
  23. #include <iostream>
  24. using namespace std;
  25. //const int maxn = 400+5;
  26. const int maxn = 2e3+5;
  27. const int INF = 0x3f3f3f3f;
  28. inline int read(){int s=0;char ch=getchar();for(; ch<'0'||ch>'9'; ch=getchar());for(; ch>='0'&&ch<='9'; ch=getchar())s=s*10+ch-'0';return s;}
  29. bool vis[maxn];
  30. int lowc[maxn];
  31. int Prim(int cost[][maxn],int n)
  32. {
  33. int ans=0;
  34. memset(vis,false,sizeof(vis));
  35. vis[0]=true;//从0开始的
  36. for(int i=1;i<n;i++)lowc[i]=cost[0][i];
  37. for(int i=1;i<n;i++)
  38. {
  39. int minc=INF;
  40. int p=-1;
  41. for(int j=0;j<n;j++)
  42. {
  43. if(!vis[j]&&minc>lowc[j])
  44. {
  45. minc=lowc[j];
  46. p=j;
  47. }
  48. }
  49. //de(minc);
  50. if(minc==-1)return -1;//又把==敲成一个等号了
  51. if(minc>ans)ans=minc;
  52. vis[p]=true;
  53. for(int j=0;j<n;j++)
  54. {
  55. if(!vis[j]&&lowc[j]>cost[p][j])
  56. lowc[j]=cost[p][j];
  57. }
  58. }
  59. return ans;
  60. }
  61. int cost[maxn][maxn];
  62. /*
  63. 1
  64. 3
  65. 0 990 692
  66. 990 0 179
  67. 692 179 0
  68. */
  69. int main()
  70. {
  71. rush()
  72. {
  73. int n;
  74. cin>>n;
  75. each(i,0,n-1)
  76. {
  77. each(j,0,n-1)
  78. {
  79. scanf("%d",&cost[i][j]);
  80. }
  81. }
  82. printf("%d\n",Prim(cost,n));
  83. }
  84. }

POJ 2485 Prim 找最长的边的更多相关文章

  1. Highways - poj 2485 (Prim 算法)

      Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 24383   Accepted: 11243 Description T ...

  2. poj 2485 Highways (最小生成树)

    链接:poj 2485 题意:输入n个城镇相互之间的距离,输出将n个城镇连通费用最小的方案中修的最长的路的长度 这个也是最小生成树的题,仅仅只是要求的不是最小价值,而是最小生成树中的最大权值.仅仅须要 ...

  3. 【POJ 2485】 Highways

    [POJ 2485] Highways 最小生成树模板 Prim #include using namespace std; int mp[501][501]; int dis[501]; bool ...

  4. HDU 6357.Hills And Valleys-字符串非严格递增子序列(LIS最长非下降子序列)+动态规划(区间翻转l,r找最长非递减子序列),好题哇 (2018 Multi-University Training Contest 5 1008)

    6357. Hills And Valleys 自己感觉这是个好题,应该是经典题目,所以半路选手补了这道字符串的动态规划题目. 题意就是给你一个串,翻转任意区间一次,求最长的非下降子序列. 一看题面写 ...

  5. UVaLive 6950 && Gym 100299K Digraphs (DFS找环或者是找最长链)

    题意:有n个只包含两个字母的字符串, 要求构造一个m*m的字母矩阵, 使得矩阵的每行每列都不包含所给的字符串, m要尽量大, 如果大于20的话构造20*20的矩阵就行了. 析:开始吧,并没有读对题意, ...

  6. Prim算法求最大权,POJ(2485)

    题目链接:http://poj.org/problem?id=2485 解题报告: 这里有一点要注意的是,第一个点时,dis数组还没有初始化,还全部为inf.第一次来到更新权时,才把邻接矩阵的数据存到 ...

  7. 【POJ 2485】Highways(Prim最小生成树)

    题目 Prim算法:任选一个点,加入集合,找出和它最近的点,加入集合,然后用加入集合的点去更新其它点的最近距离......这题求最小生成树最大的边,于是每次更新一下最大边. #include < ...

  8. POJ 2485 Highways (prim最小生成树)

    对于终于生成的最小生成树中最长边所连接的两点来说 不存在更短的边使得该两点以不论什么方式联通 对于本题来说 最小生成树中的最长边的边长就是使整个图联通的最长边的边长 由此可知仅仅要对给出城市所抽象出的 ...

  9. POJ 3080 Blue Jeans 找最长公共子串(暴力模拟+KMP匹配)

    Blue Jeans Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20966   Accepted: 9279 Descr ...

随机推荐

  1. oracle清除归档

    清除Oracle归档日志命令echo -e 'delete noprompt archivelog ALL COMPLETED BEFORE '\'SYSDATE-${DELETE_ARCHIVELO ...

  2. mvc partialView断点调试问题

    mvc中的partialview 在前端f12调试时,默认看不到代码的.  在Js中加上debugger;  调试时会走到断点,多出个VM打头的局部视图页面.

  3. mysql 远程登陆

    1.查询mysql是否启动 netstat  -lnp|grep   3306 ps -df |grep  mysqld 2.通过TCPIP的方式测试连接 mysql -uqingjiao -padm ...

  4. AlarmManager(闹钟服务)

    1.Timer类与AlarmManager类区别: 对Timer就是定时器,一般写定时任务的时候 肯定离不开他,但是在Android里,他却有个短板,不太适合那些需要长时间在后台运行的 定时任务,因为 ...

  5. PAT 甲级 1013 Battle Over Cities (25 分)(图的遍历,统计强连通分量个数,bfs,一遍就ac啦)

    1013 Battle Over Cities (25 分)   It is vitally important to have all the cities connected by highway ...

  6. 游戏数值——LOL篇 以LOL为起点-说游戏数值设计核心思路

      附     文   文档在今年三月份我动笔写了一小部分,但当时思路凌乱,行文梗阻,于是丢在一边构思了半年,现在又回过头来慢慢写,希望能写好写完吧,初衷是希望即时萌新也能看懂,但是好像并不能行——本 ...

  7. 比特币nBits计算

    转载:比特币源码分析(二十二) - 挖矿和共识 https://blog.csdn.net/yzpbright/article/details/81231351 CalculateNextWorkRe ...

  8. Carthage - Could not find any available simulators for iOS

    升级xcode版本后,用carthage编译第三方库有可能会报这个错误:[Could not find any available simulators for iOS] 两个解决方法: 1. 升级你 ...

  9. SparkMLLib的简单学习

    一. 简介 1. 机器学习中,可以将数据划分为连续数据和离散数据 a. 连续数据:可以取任何值,如房价 b. 离散数据:仅有少量特殊值,如一个房屋有2个或3个房间,但不能为2.75个房间 二. 创建向 ...

  10. vue定时器

    mounted(){ setInterval(this.getasks,1000 * 120); },