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

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

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node
{
int v1,v2;
int dis;
int flg;
} s[10000]; int cmp(const node a,const node b)
{
if(a.dis<b.dis)
return 1;
else
return 0;
} int father[200],n; int kruskal(int num,int m)
{
int ans=0,cnt=1;
for(int i=0; i<m; i++)
{
if(i==num)
continue;
int s1=father[s[i].v1];
int s2=father[s[i].v2];
if(s1!=s2)
{
ans+=s[i].dis;
//s[i].flg=1;
cnt++;
father[s2]=s1;
for(int j=0; j<=n; j++)
if(father[j]==s2)
father[j]=s1;
}
}
if(cnt!=n) return -1;
else return ans;
}
int main()
{
int text;
scanf("%d",&text);
while(text--)
{
int m;
int ans=0;
scanf("%d%d",&n,&m);
for(int i=0; i<=n; i++)
father[i]=i;
for(int i=0; i<m; i++)
{
scanf("%d%d%d",&s[i].v1,&s[i].v2,&s[i].dis);
s[i].flg=0;
} sort(s,s+m,cmp);
int cnt=1;
for(int i=0; i<m; i++)
{
int s1=father[s[i].v1];
int s2=father[s[i].v2];
if(s1!=s2)
{
ans+=s[i].dis;
s[i].flg=1;
cnt++;
father[s2]=s1;
for(int j=0; j<=n; j++)
if(father[j]==s2)
father[j]=s1;
}
}
int w=0;
for(int i=0; i<m; i++)
{
if(s[i].flg==0)
continue;
int sum=0;
for(int j=0;j<=n;j++)
father[j]=j;
sum=kruskal(i,m);
//printf("sum==%d\n",sum);
if(sum==ans)
{
w=1;
break;
}
}
if(w==1)
printf("Not Unique!\n");
else
printf("%d\n",ans);
}
return 0;
}

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. memcached全面剖析--5. memcached的应用和兼容程序

    我是Mixi的长野.memcached的连载终于要结束了.到上次为止,我们介绍了与memcached直接相关的话题,本次介绍一些mixi的案例和实际应用上的话题,并介绍一些与memcached兼容的程 ...

  2. java生成PDF,各种格式、样式、水印都有

    代码中有两处需要图片,请自行替换. 一个是水印.一个是手指. 需要的JAR包链接:http://download.csdn.net/detail/justinytsoft/9688893 下面是预览: ...

  3. NoSQL 非关系数据库

    NoSQL 数据库的学习 Redis的Windows版本安装 待整理 redis 安装 关于分布式的网站介绍 NOSQL 几个网页 认识MongoDB Mongodb实现副本集和Mongodb副本集的 ...

  4. SteveY对Amazon和Google平台的吐槽

    Steve Yegge, Amazon的前员工,现任Google员工,其本来想在Google+上和Google的员工讨论一些关于平台的东西,结果不小心把圈子设成了Public,结果这篇文章就公开给了全 ...

  5. MySQL经常使用技巧

    建表 每一个表都有一个id字段,最好为UNSIGNED.如 INT(9) UNSIGNED NOT NULL 在表使用一段时间后,使用PROCEDURE ANALYSE得到建议,如select * f ...

  6. Microsoft.ACE.OLEDB.12.0 及其在 MSSQL中的使用

    1.Microsoft.ACE.OLEDB.12.0 简介 就是一个数据访问接口,用于在office文件和非office应用程序间传输数据.例如 Microsoft Office Access 201 ...

  7. springboot JSP 404

    up vote 1.  mvc # 页面默认前缀目录spring.mvc.view.prefix=/WEB-INF/view/# 响应页面默认后缀spring.mvc.view.suffix=.jsp ...

  8. centos 安装pecl

    一.更新yum源,安装php7 CentOS/RHEL 7.x: 1 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-lates ...

  9. [转]IDEA 出现编译错误 Multi-catches are not supported a this language level 解决方法

    转自 http://blog.csdn.net/qq465235530/article/details/53897538 首先出现这种问题是说明正在使用低版本jdk编译其本身不支持的语法,出现这种情况 ...

  10. 分布式服务管理框架-Zookeeper节点ACL

    文章转自:http://blog.csdn.net/xyang81/article/details/53147894 概述 ACL全称为Access Control List(访问控制列表),用于控制 ...