/*
只需判断等效边和必选边的个数和n-1的关系即可
*/
#include<stdio.h>
#include<stdlib.h>
#define N  110
struct node {int u,v,w;
}f[N*N*2];
int cmp(const void *a,const void*b) {
return (*(struct node *)a).w-(*(struct node *)b).w;
}
int pre[N];
int find(int x) {if(x!=pre[x])pre[x]=find(pre[x]);return pre[x];
}
int main() {int t,n,m,i,j,sum,ff,total;scanf("%d",&t);while(t--) {scanf("%d%d",&n,&m);for(i=1;i<=n;i++)pre[i]=i;for(i=0;i<m;i++)scanf("%d%d%d",&f[i].u,&f[i].v,&f[i].w);qsort(f,m,sizeof(f[0]),cmp);j=0;sum=0;ff=0;total=0;for(i=0;i<m&&ff<n-1;) {j=i;while(f[i].w==f[j].w&&j<m) {int a=find(f[j].u);int b=find(f[j].v);if(a!=b)sum++;j++;}j=i;while(f[i].w==f[j].w&&j<m&&ff<n-1) {int a=find(f[j].u);int b=find(f[j].v);if(a!=b)  {pre[a]=b;ff++;// printf("%d %d\n",f[j].u,f[j].v);total+=f[j].w;}j++;}i=j;}if(sum>n-1)printf("Not Unique!\n");elseprintf("%d\n",total);}
return 0;
}

转载于:https://www.cnblogs.com/thefirstfeeling/p/4410646.html

poj 1679 判断最小生成树是否唯一相关推荐

  1. 判断最小生成树是否唯一

    题目链接 题目描述:给一个图,判断最小生成树是否唯一,n<=100 解题思路:题意简单明了,最小生成树模板都会敲,网上也没有什么特别好的方法,都是最简单暴力枚举,枚举的前提,有可以取代它的边. ...

  2. poj 1679 TheUniqueMST 最小生成树Kruskal(、Prim待做

    题意: 给定连接的无向图,告诉它的最小生成树是否唯一. 定义1(生成树):考虑连通的无向图G =(V,E).G的生成树是G的子图,比如T =(V',E'),具有以下属性: 1.V'= V. 2.T是连 ...

  3. POJ 1679 判断最小树是否唯一

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

  4. PAT顶级 1016 Uniqueness of MST (35分)(判断最小生成树是否唯一)

    添加链接描述 Given any weighted undirected graph, there exists at least one minimum spanning tree (MST) if ...

  5. 【POJ 1679 The Unique MST】最小生成树

    无向连通图(无重边),判断最小生成树是否唯一,若唯一求边权和. 分析生成树的生成过程,只有一个圈内出现权值相同的边才会出现权值和相等但"异构"的生成树.(并不一定是最小生成树) 分 ...

  6. POJ 1679 解题报告

    这道题是判断最小生成树是否唯一. 方法之一(也是显而易见正确的方法)是求次小生成树,然后看两者的值是否一样.一样则不唯一.ByVoid有对次小生成树(及次短路径)的讲解(https://www.byv ...

  7. poj 1679 The Unique MST

    题目连接 http://poj.org/problem?id=1679 The Unique MST Description Given a connected undirected graph, t ...

  8. POJ - 1679 The Unique MST

    题意: 给定一个有 n 个点的无向图,判断最小生成树是否唯一. 链接: https://vjudge.net/problem/POJ-1679 解题思路: 考虑在 Kruskal 算法基础上进行判断. ...

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

    求次小生成树的两种方法. 第一种:Kruskal算法比较好操作.先求一遍最小生成树,然后再记录最小生成树上的边.然后再枚举删去最小生成树上的边,再求最小生成树,如果求出的最小生成树的花费等于第一次最小 ...

最新文章

  1. pip国内常用源及配置方式
  2. torch 特征对齐
  3. 基于 Zookeeper 的分布式锁实现
  4. 选择最好用的PyCharm IDE
  5. c语言蚂蚁搬,《蚂蚁搬豆》教案
  6. vba 将html转换excel,利用VBA将不同格式excel模板之间进行数据转换实例
  7. [转]数据库事务ACID特性
  8. vue watch 第一次不执行_Vue 实现前进刷新,后退不刷新的效果
  9. imread函数_MATLAB图像处理:27:使用imtranslate函数平移图像
  10. java的uuid有什么用_java – 什么是有效的UUID?
  11. jdk1.8之lambda表达式
  12. python tkinter库 pack布局方法调用
  13. python入门100例题-这 100 道 Python 题,拿去刷!!!
  14. 2018暑假第五周总结(8.6-8.12)
  15. 计蒜客 17119 Trig Function(切比雪夫多项式)
  16. Win10系统下配置virtualenv
  17. 入门激光雷达点云的3D目标检测
  18. 图片base64转存本地url
  19. 怎样用计算机截图,如何在电脑中截图
  20. 对100层楼两个玻璃球测试问题的理解

热门文章

  1. C++面试八股文快问快答の基础篇
  2. 从web.xml谈谈SpringMVC集成spring的初始化流程及SpringBoot集成SpringMVC
  3. @EnableDiscoveryClient
  4. Java网络编程之IP地址和InetAddress类
  5. Java的主要就业方向
  6. Securing the Deep Learning Stack
  7. linux内核启动后门,Linux下编写隐蔽的自启动回连后门
  8. html不换行溢出省略号代替,css控制不溢出,不换行,溢出部分省略号显示
  9. ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记
  10. 数论与数学专题练习(一)(201802~201805)