次小生成树题(k) poj1679The Unique MST
http://poj.org/problem?id=1679
#include<iostream>
#include<vector>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node{
int u,v,w; }e[];
int f[];
vector<int>vis;
bool cmp(node p,node q){
return p.w<q.w;
}
int find(int x){
return x==f[x]?x:f[x]=find(f[x]);
}
int main(){
int t;
scanf("%d",&t);
while(t--){
int n,m,ans=;
vis.clear();
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
e[i].u=u;
e[i].v=v;
e[i].w=w;
}
sort(e+,e++m,cmp);
for(int i=;i<=n;i++)
f[i]=i;
for(int j=,i=;i<=m;i++){
int u=e[i].u,v=e[i].v;
int a=find(u),b=find(v);
if(a!=b){
f[a]=b;
j++;
ans+=e[i].w;
vis.push_back(i);
}
if(j==n-)
break;
}
int flag=;
for(int k=;k<vis.size();k++){
int sign=vis[k];
int ans1=;
for(int i=;i<=n;i++)
f[i]=i;
int j=;
for(int i=;i<=m;i++){
if(i!=sign){
int u=e[i].u,v=e[i].v;
int a=find(u),b=find(v);
if(a!=b){
f[a]=b;
ans1+=e[i].w;
j++;
}
if(j==n-)
break;
}
}
if(j==n-){
if(ans1==ans){
flag=;
break;
}
}
}
if(flag)
puts("Not Unique!");
else
printf("%d\n",ans); }
return ;
}
次小生成树题(k) poj1679The Unique MST的更多相关文章
- K - The Unique MST
K - The Unique MST #include<iostream> #include<cstdio> #include<cstring> #include& ...
- POJ1679The Unique MST(次小生成树)
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25203 Accepted: 8995 D ...
- poj1679The Unique MST(次小生成树模板)
次小生成树模板,别忘了判定不存在最小生成树的情况 #include <iostream> #include <cstdio> #include <cstring> ...
- K - The Unique MST - poj 1679
题目的意思已经说明了一切,次小生成树... ****************************************************************************** ...
- POJ--1679--The Unique MST【推断MST是否唯一】
链接:http://poj.org/problem? id=1679 题意:告诉你有n个点,m条边,以及m条边的信息(起点.终点.权值).推断最小生成树是否唯一 之前是用另外一种方法做的.复杂度最高可 ...
- K - The Unique MST (最小生成树的唯一性)
Given a connected undirected graph, tell if its minimum spanning tree is unique. Definition 1 (Spann ...
- POJ1679 The Unique MST 【次小生成树】
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20421 Accepted: 7183 D ...
- POJ-1679.The Unique MST.(Prim求次小生成树)
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 39561 Accepted: 14444 ...
- poj 1679 判断MST是不是唯一的 (次小生成树)
判断MST是不是唯一的 如果是唯一的 就输出最小的权值和 如果不是唯一的 就输出Not Unique! 次小生成树就是第二小生成树 如果次小生成树的权值和MST相等 那么MST就不是唯一的 法一: ...
随机推荐
- 吴裕雄--天生自然 JAVASCRIPT开发学习:计时事件
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 在vSphere群集中配置EVC的注意事项
原路径:https://blog.51cto.com/wangchunhai/2084434 个人觉得有一点写的有出入: 2 vCenter保存在本地存储中,无共享存储 中主机图片和描述信息有异常. ...
- [Java-基础] 什么是ORM
ORM简介 ORM:对象关系映射:Object Relational Mapping 用于实现面向对象编程语言里不同类型系统的数据之间的转换 一般的,数据库绝大部分是面向关系的数据库,但是写代码的 ...
- Dynamics CRM - 如何通过 C# Plugin 给 Contact的 主键(FullName)赋值
Contact 是 CRM 默认带有的 Entity,主键是 <FullName>,根据开发需求,与主键相关的字段都被设置成隐藏,包括了<Full Name>,<Firs ...
- Bezier曲线的实现——de Casteljau算法
这学期同时上了计算机图形学和计算方法两门课,学到这部分的时候突然觉得de Casteljau递推算法特别像牛顿插值,尤其递推计算步骤很像牛顿差商表. 一开始用伯恩斯坦多项式计算Bezier曲线的时候, ...
- 以KNN为例用sklearn进行数据分析和预测
准备 相关的库 相关的库包括: numpy pandas sklearn 带入代码如下: import pandas as pd import numpy as np from sklearn.nei ...
- ZJNU 1217 - 航线问题——高级
将所有航线的其中一边排序后,另一边进行类dp 定义一个数组c,c[i]表示在所有能够开通i条航线的组合中,位置序号最大的那条航线的序号的最小值 比如下面一个样例 1 3 2 4 3 1 4 2 此时对 ...
- document.write的时机
document.write第一次加载进入页面的时候会紧跟文档,写入内容.但是如果在文档已经加载完毕之后,再通过点击的方式调用函数的话会直接把整个文档覆盖掉.
- 哈夫曼编码的理解(Huffman Coding)
哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,可变字长编码(VLC)的一种.Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最 ...
- HDU-6514 Monitor(二维前缀和+差分)
http://acm.hdu.edu.cn/showproblem.php?pid=6514 Problem Description Xiaoteng has a large area of land ...