题意:给出n个点,m条边,要你判断最小生成树是否唯一。

思路:先做一次最小生成树操作,标记选择了的边,然后枚举已经被标记了的边,判断剩下的边组成的最小生成树是否与前面的相等,相等,则不唯一,否则唯一......

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. struct node
  7. {
  8. int v1,v2;
  9. int dis;
  10. int flg;
  11. } s[10000];
  12.  
  13. int cmp(const node a,const node b)
  14. {
  15. if(a.dis<b.dis)
  16. return 1;
  17. else
  18. return 0;
  19. }
  20.  
  21. int father[200],n;
  22.  
  23. int kruskal(int num,int m)
  24. {
  25. int ans=0,cnt=1;
  26. for(int i=0; i<m; i++)
  27. {
  28. if(i==num)
  29. continue;
  30. int s1=father[s[i].v1];
  31. int s2=father[s[i].v2];
  32. if(s1!=s2)
  33. {
  34. ans+=s[i].dis;
  35. //s[i].flg=1;
  36. cnt++;
  37. father[s2]=s1;
  38. for(int j=0; j<=n; j++)
  39. if(father[j]==s2)
  40. father[j]=s1;
  41. }
  42. }
  43. if(cnt!=n) return -1;
  44. else return ans;
  45. }
  46. int main()
  47. {
  48. int text;
  49. scanf("%d",&text);
  50. while(text--)
  51. {
  52. int m;
  53. int ans=0;
  54. scanf("%d%d",&n,&m);
  55. for(int i=0; i<=n; i++)
  56. father[i]=i;
  57. for(int i=0; i<m; i++)
  58. {
  59. scanf("%d%d%d",&s[i].v1,&s[i].v2,&s[i].dis);
  60. s[i].flg=0;
  61. }
  62.  
  63. sort(s,s+m,cmp);
  64. int cnt=1;
  65. for(int i=0; i<m; i++)
  66. {
  67. int s1=father[s[i].v1];
  68. int s2=father[s[i].v2];
  69. if(s1!=s2)
  70. {
  71. ans+=s[i].dis;
  72. s[i].flg=1;
  73. cnt++;
  74. father[s2]=s1;
  75. for(int j=0; j<=n; j++)
  76. if(father[j]==s2)
  77. father[j]=s1;
  78. }
  79. }
  80. int w=0;
  81. for(int i=0; i<m; i++)
  82. {
  83. if(s[i].flg==0)
  84. continue;
  85. int sum=0;
  86. for(int j=0;j<=n;j++)
  87. father[j]=j;
  88. sum=kruskal(i,m);
  89. //printf("sum==%d\n",sum);
  90. if(sum==ans)
  91. {
  92. w=1;
  93. break;
  94. }
  95. }
  96. if(w==1)
  97. printf("Not Unique!\n");
  98. else
  99. printf("%d\n",ans);
  100. }
  101. return 0;
  102. }

poj1679(判断最小生成树是否唯一)的更多相关文章

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

    http://poj.org/problem?id=1679 Description Given a connected undirected graph, tell if its minimum s ...

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

    题目链接: http://poj.org/problem?id=1679 Description Given a connected undirected graph, tell if its min ...

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

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

  4. POJ 1679 The Unique MST 【判断最小生成树是否唯一】

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

  5. poj 1679 The Unique MST 判断最小生成树是否唯一(图论)

    借用的是Kruskal的并查集,算法中的一点添加和改动. 通过判定其中有多少条可选的边,然后跟最小生成树所需边做比较,可选的边多于所选边,那么肯定方案不唯一. 如果不知道这个最小生成树的算法,还是先去 ...

  6. POJ1679判断最小生成树的唯一性

    题意:      判断最小树是否唯一. 思路:      我用了两种方法,主要就是好久没敲了,找个水题练练手,第一种就是先一遍最小生成树,然后枚举最小生成树上的每一条边,然后取消这条边,在跑一遍最小生 ...

  7. poj 1679 判断最小生成树是否唯一

    /* 只需判断等效边和必选边的个数和n-1的关系即可 */ #include<stdio.h> #include<stdlib.h> #define N 110 struct ...

  8. POJ-1679 The Unique MST---判断最小生成树是否唯一

    题目链接: https://vjudge.net/problem/POJ-1679 题目大意: 给定一个无向连通网,判断最小生成树是否唯一. 思路: (1)对图中的每条边,扫描其他边,如果存在相同权值 ...

  9. poj1679(最小生成树)

    传送门:The Unique MST 题意:判断最小生成树是否唯一. 分析:先求出原图的最小生成树,然后枚举删掉最小生成树的边,重做kruskal,看新的值和原值是否一样,一样的话最小生成树不唯一. ...

随机推荐

  1. “医疗信息化行业之中的联发科”- 我们在医疗行业中的定位及目标 想做一个面对中小企业的专业上游软件供应商 台湾联发科技颠覆掉的是一个封闭的手机产业系统 解决方案,即AgileHIS.NET数字化医院基础方案

    “医疗信息化行业之中的联发科”- 我们在医疗行业中的定位及目标   我们做中国医疗信息化行业之中的联发科 ---我们在医疗行业中的定位及目标 从我个人来讲,我从2001年到现在这10年之间基本上一直在 ...

  2. 【JQuery】jQuery(document).ready(function($) { });的几种表示方法及load和ready的区别

    jQuery中处理加载时机的几种方式 第一种: jQuery(document).ready(function() { alert("你好"); }); //或 $(documen ...

  3. 【javascript】javascript中function(){},function(){}(),new function(){},new Function()

    和java比起来,javascript真的是松散的无以复加,不过这也让我们在无聊之余,有精力去探讨一些复杂的应用,从而在开发之路上,获得一些新的想法. javascript中的类的构造 javascr ...

  4. PreparedStatement的用法及优点

    jdbc(java database connectivity,java数据库连接)的api中的主要的四个类之一的java.sql.statement要求开发者付出大量的时间和精力.在使用statem ...

  5. AndroidStudio编译错误:Error: null value in entry: blameLogFolder=null

    今天写项目的时候,电脑开了个WiFi热点,然后这个热点和window驱动不兼容,有时候会导致电脑重启,重启之后AndroidStudio编译就报错了, Error: null value in ent ...

  6. SharePoint 2013 Farm 安装指南——构建一个双层SharePoint Farm

    最近要对公司里的SharePoint进行升级,由于旧的系统SharePoint 2010已经有2年了,上面改动比较多,而且权限也很混乱了,所以下定决心要对其做一次升级,重新部署一台新的SharePoi ...

  7. mac 利用 sshpass 自动登录

    mac 利用 sshpass  + 配置文件 实现自动登录 使用方式 https://github.com/vipzhicheng/go  参见此项目 其实原理也就是 脚本 读取配置文件 匹配 参数或 ...

  8. 稀疏傅里叶变换(sparse FFT)

    作者:桂. 时间:2018-01-06  14:00:25 链接:http://www.cnblogs.com/xingshansi/p/8214122.html 前言 对于数字接收来讲,射频域随着带 ...

  9. 在Windows系统上怎么使用SecureCRT链接Linux AWS EC2 -摘自网络

    在Windows系统上就需要使用SecureCRT,Putty等工具,进行连接.但是AWS提供的XXX.pem文件,需要做一些处理SecureCRT的方法: 1.使用XXX.pem文件生成一个公钥文件 ...

  10. 给现有MVC项目增加Web API支持

    在MVC4中自带了Web API不再需要从Nuget中下载. Step1:增加System.Web.Http,System.Web.Http.WebHost,System.Net.Http三个程序集的 ...