次小生成树模板,别忘了判定不存在最小生成树的情况

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. const int maxn = + ;
  7. const int inf = 0x3f3f3f3f;
  8. int MAX[maxn][maxn], mp[maxn][maxn], dis[maxn], pre[maxn];
  9. int t, n, m;
  10. bool vis[maxn], used[maxn][maxn];
  11. inline int min( int a,int b ){
  12. return a<b ? a:b;
  13. }
  14.  
  15. inline int max( int a, int b ){
  16. return a>b ? a:b;
  17. }
  18.  
  19. inline int prim(){
  20. int res = ;
  21. memset( vis, , sizeof(vis) );
  22. memset( used, , sizeof(used) );
  23. memset( MAX, , sizeof(MAX) );
  24. for( int i=; i<=n; i++ ){
  25. pre[i] = ;
  26. dis[i] = mp[i][];
  27. }
  28. vis[] = ;
  29. dis[] = pre[] = ;
  30. for( int i=; i<n; i++ ){
  31. int minid, MIN = inf;
  32. for( int j=; j<=n; j++ ) if( !vis[j] && MIN>dis[j] ) MIN = dis[minid=j];
  33. if( MIN==inf ) return -; //不存在最小生成树
  34. res += MIN;
  35. vis[minid] = ;
  36. used[minid][pre[minid]] = used[pre[minid]][minid] = ;
  37. for( int j=; j<=n; j++ ){
  38. if( vis[j] ) MAX[minid][j] = MAX[j][minid] = max( dis[minid], MAX[j][pre[minid]] );
  39. if( !vis[j] && dis[j]>mp[minid][j] ){
  40. pre[j] = minid;
  41. dis[j] = mp[minid][j];
  42. }
  43. }
  44. }
  45. return res;
  46. }
  47.  
  48. int main(){
  49. scanf("%d", &t);
  50. while( t-- ){
  51. scanf("%d%d", &n, &m);
  52. memset( mp, inf, sizeof(mp) );
  53. for( int i=; i<m; i++ ){
  54. int u, v, w;
  55. scanf("%d%d%d", &u, &v, &w);
  56. mp[u][v] = mp[v][u] = w;
  57. }
  58. int min_ans = prim(), ans = inf;
  59. if( min_ans==- ){ printf("Not Unique!\n"); continue; } //不存在最小生成树
  60. for( int i=; i<=n; i++ )
  61. for( int j=i+; j<=n; j++ )
  62. if( mp[i][j]!=inf && !used[i][j] )
  63. ans = min( ans, min_ans+mp[i][j]-MAX[i][j] );
  64. if( ans==min_ans ) printf("Not Unique!\n");
  65. else printf("%d\n", min_ans);
  66. }
  67.  
  68. return ;
  69. }

poj1679The Unique MST(次小生成树模板)的更多相关文章

  1. POJ_1679_The Unique MST(次小生成树模板)

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 23942   Accepted: 8492 D ...

  2. POJ-1679 The Unique MST,次小生成树模板题

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K       Description Given a connected undirec ...

  3. POJ1679 The Unique MST —— 次小生成树

    题目链接:http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total S ...

  4. POJ1679 The Unique MST[次小生成树]

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 28673   Accepted: 10239 ...

  5. POJ 1679 The Unique MST (次小生成树 判断最小生成树是否唯一)

    题目链接 Description Given a connected undirected graph, tell if its minimum spanning tree is unique. De ...

  6. POJ_1679_The Unique MST(次小生成树)

    Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Definit ...

  7. POJ 1679 The Unique MST (次小生成树)

    题目链接:http://poj.org/problem?id=1679 有t组数据,给你n个点,m条边,求是否存在相同权值的最小生成树(次小生成树的权值大小等于最小生成树). 先求出最小生成树的大小, ...

  8. POJ 1679 The Unique MST (次小生成树kruskal算法)

    The Unique MST 时间限制: 10 Sec  内存限制: 128 MB提交: 25  解决: 10[提交][状态][讨论版] 题目描述 Given a connected undirect ...

  9. poj 1679 The Unique MST (次小生成树(sec_mst)【kruskal】)

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 35999   Accepted: 13145 ...

随机推荐

  1. 【NPDP笔记】第三章 新产品流程

      3.1 产品开发,风险与汇报的过程,开发实践和流程提升成功率 管控新产品失败的风险,随着成本增加,风险降低 知识能改改进决策,降低风险,决策框架 识别问题与机会 收集信息 组织记录,组织员工 外部 ...

  2. [分享会] 微服务框架设计 (基于Swoole)

    框架三要素 1. Service 通信 2. 服务管理 3. 开发组件   为什么需要服务 1.自治性 2.可组合 3.异构性 2.弹性扩展   -实现方式-   共享库 1.二进制文件/Compos ...

  3. socks5 代理服务器ss5配置

    安装 yum install pam-devel openldap-devel openssl-devel yum -y install gcc automake make pam-devel ope ...

  4. 学习 Git Rebase

    有问题为什么不问问神奇的 man 呢? rebase 也算是我比较常用的一个指令了,但是很长时间以来,对这个指令的认识还是不够深刻,于是就找了个时间认真地读了一下 git rebase 的文档.这份文 ...

  5. Keyboarding

    题目描述 思路 一开始想先写一个bfs,目标字符串要加上一个'*',表示这是一个换行符,然后一个字母一个字母的找,每次重置一下vis数组,bfs返回的结果再加上1,表示要打印这个字母,结果第一个样例没 ...

  6. Oracle--(Hierarchical Queries)层级查询(用于部门层级等)

    原网址:https://www.cnblogs.com/guofeiji/p/5291486.html 如果表中包含层级数据,可以使用层级查询子句按层级顺序选择数据行,形成层级树,形式如下: 下面是层 ...

  7. Spring boot java.lang.NoClassDefFoundError: org/springframework/boot/bind/RelaxedPropertyResolver

    Spring boot 2.0.3 RELEASE 配置报错 java.lang.NoClassDefFoundError: org/springframework/boot/bind/Relaxed ...

  8. Java11新特性 - 标准Java异步HTTP客户端

    Java9开始引入的一个处理 HTTP 请求的的 HTTP Client API,该 API 支持同步和异步,而在 Java 11 中已经为正式可用状态,你可以在 java.net 包中找到这个 AP ...

  9. Unity - 绘制正五边形网格

    本文简述了Unity中绘制正五边形网格的基本方法:计算顶点信息.设置三角形覆盖信息.创建配置mesh 绘制方法 基本思路:计算出五边形顶点坐标信息作为数组,设置三角形包围方式,再创建新的mesh配置v ...

  10. C# vb .net实现焦距柔化特效滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的焦距柔化效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...