POJ 1679 The Unique MST(推断最小生成树_Kruskal)
Description
Definition 1 (Spanning Tree): Consider a connected, undirected graph G = (V, E). A spanning tree of G is a subgraph of G, say T = (V', E'), with the following properties:
1. V' = V.
2. T is connected and acyclic.
Definition 2 (Minimum Spanning Tree): Consider an edge-weighted, connected, undirected graph G = (V, E). The minimum spanning tree T = (V, E') of G is the spanning tree that has the smallest total cost. The total cost of T means the sum of the weights on all
the edges in E'.
Input
triple (xi, yi, wi), indicating that xi and yi are connected by an edge with weight = wi. For any two nodes, there is at most one edge connecting them.
Output
Sample Input
- 2
- 3 3
- 1 2 1
- 2 3 2
- 3 1 3
- 4 4
- 1 2 2
- 2 3 2
- 3 4 2
- 4 1 2
Sample Output
- 3
- Not Unique!
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- int father[111],n,m,first;
- struct node
- {
- int u,v,w;
- int used;
- int equal;
- int del;
- } a[11111];
- bool cmp(node x,node y)
- {
- if(x.w<y.w) return true;
- return false;
- }
- int find(int x)
- {
- int r=x;
- while(father[r]!=r) r=father[r];
- int i=x,j;
- while(i!=r) {
- j=father[i];
- father[i]=r;
- i=j;
- }
- return r;
- }
- int prime()
- {
- int i,j,k,sum,num;
- sum=0;num=0;
- for(i=1;i<=n;i++) father[i]=i;
- for(i=1;i<=m;i++) {
- if(a[i].del) continue;
- int fx=find(a[i].u);
- int fy=find(a[i].v);
- if(fx!=fy) {
- num++;
- father[fx]=fy;
- sum+=a[i].w;
- if(first) a[i].used=1;
- }
- if(num==n-1) break;
- }
- return sum;
- }
- int main()
- {
- int i,j,k,u,v,w,sum1,sum2;
- int t;
- scanf("%d",&t);
- while(t--) {
- sum1=sum2=0;
- memset(a,0,sizeof(a));
- scanf("%d%d",&n,&m);
- for(i=1;i<=m;i++) {
- scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].w);
- }
- for(i=1;i<=m;i++) {
- for(j=i+1;j<=m;j++) {
- if(a[i].w==a[j].w) a[i].equal=1;
- }
- }
- sort(a+1,a+1+m,cmp);
- first=1;
- sum1=prime();
- first=0;
- for(i=1;i<=m;i++) {
- if(a[i].used && a[i].equal) {
- a[i].del=1;
- sum2=prime();
- if(sum1==sum2) {
- printf("Not Unique!\n");
- break;
- }
- }
- }
- if(i==m+1) printf("%d\n",sum1);
- }
- }
POJ 1679 The Unique MST(推断最小生成树_Kruskal)的更多相关文章
- POJ 1679 The Unique MST 推断最小生成树是否唯一
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22715 Accepted: 8055 D ...
- poj 1679 The Unique MST (判定最小生成树是否唯一)
题目链接:http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total S ...
- POJ 1679 The Unique MST (最小生成树)
The Unique MST 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/J Description Given a conn ...
- POJ 1679 The Unique MST 【最小生成树/次小生成树模板】
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22668 Accepted: 8038 D ...
- 【POJ 1679 The Unique MST】最小生成树
无向连通图(无重边),判断最小生成树是否唯一,若唯一求边权和. 分析生成树的生成过程,只有一个圈内出现权值相同的边才会出现权值和相等但“异构”的生成树.(并不一定是最小生成树) 分析贪心策略求最小生成 ...
- POJ 1679 The Unique MST(最小生成树)
Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Definit ...
- poj 1679 The Unique MST 判断最小生成树是否唯一(图论)
借用的是Kruskal的并查集,算法中的一点添加和改动. 通过判定其中有多少条可选的边,然后跟最小生成树所需边做比较,可选的边多于所选边,那么肯定方案不唯一. 如果不知道这个最小生成树的算法,还是先去 ...
- poj 1679 The Unique MST 【次小生成树】【模板】
题目:poj 1679 The Unique MST 题意:给你一颗树,让你求最小生成树和次小生成树值是否相等. 分析:这个题目关键在于求解次小生成树. 方法是,依次枚举不在最小生成树上的边,然后加入 ...
- poj 1679 The Unique MST(唯一的最小生成树)
http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submis ...
- poj 1679 The Unique MST
题目连接 http://poj.org/problem?id=1679 The Unique MST Description Given a connected undirected graph, t ...
随机推荐
- OpenVX
OpenVX openvx 1. 编译 尝试编译openvx_sample,下载相关代码. 下载的sample code直接使用make可以生成libopenvx.so. 使用python Buil ...
- php数据库增删改查
首先建立一个数据库db_0808,将db_0808中表格student导入网页. CURD.php <!DOCTYPE html> <html lang="en" ...
- Deutsch lernen (03)
1. das Gewerbe, - 行业 Was ist Ihr Gewerbe? Welches Gewerbe treibt er? treiben - trieb - getrieben 从事 ...
- spring中的prop、set、list、map
props.set.list.map这些事spring配置文件中很常见的标签,下面说下各自的适用场合. props:用于键值对,建和值都为string类型. <property name=&qu ...
- HDU_1729_sg函数(dfs)
Stone Game Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- Java继承实现接口的抽象类
1.TestIntace.java package com.chase.abstrac; /** * 接口 * @author Chase * * @date 2013-10-21 下午02:29:1 ...
- [POI2012]OKR-A Horrible Poem
正解:对于一个区间l,r,它的循环节长度一定是它的因数. 然后如果循环节是这个长度,那么[l+len,r]一定等于[l,r-len]. 然后每次询问的时候就把它的长度的最小质因子提出来. BZOJ上都 ...
- 最小化安装CentOS-7-x86_64-Minimal-1511图文教程
说明: 虚拟机产品:VMware® Workstation 12 Pro,版本:12.5.0 build-4352439 系统镜像:CentOS-7-x86_64-Minimal-1511.iso 操 ...
- 邓_ Phpcms·二次开发
PHPCMS V9产品介绍 PHPCMS V9(简称V9)采用PHP5+MYSQL做为技术基础进行开发.V9采用OOP(面向对象)方式进行基础运行框架搭建.模块化开发方式做为功能开发形式.框架易于功能 ...
- (29)Spring boot 文件上传(多文件上传)【从零开始学Spring Boot】
文件上传主要分以下几个步骤: (1)新建maven java project: (2)在pom.xml加入相应依赖: (3)新建一个表单页面(这里使用thymleaf); (4)编写controlle ...