poj1679The Unique MST(次小生成树模板)
次小生成树模板,别忘了判定不存在最小生成树的情况
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; const int maxn = + ;
const int inf = 0x3f3f3f3f;
int MAX[maxn][maxn], mp[maxn][maxn], dis[maxn], pre[maxn];
int t, n, m;
bool vis[maxn], used[maxn][maxn];
inline int min( int a,int b ){
return a<b ? a:b;
} inline int max( int a, int b ){
return a>b ? a:b;
} inline int prim(){
int res = ;
memset( vis, , sizeof(vis) );
memset( used, , sizeof(used) );
memset( MAX, , sizeof(MAX) );
for( int i=; i<=n; i++ ){
pre[i] = ;
dis[i] = mp[i][];
}
vis[] = ;
dis[] = pre[] = ;
for( int i=; i<n; i++ ){
int minid, MIN = inf;
for( int j=; j<=n; j++ ) if( !vis[j] && MIN>dis[j] ) MIN = dis[minid=j];
if( MIN==inf ) return -; //不存在最小生成树
res += MIN;
vis[minid] = ;
used[minid][pre[minid]] = used[pre[minid]][minid] = ;
for( int j=; j<=n; j++ ){
if( vis[j] ) MAX[minid][j] = MAX[j][minid] = max( dis[minid], MAX[j][pre[minid]] );
if( !vis[j] && dis[j]>mp[minid][j] ){
pre[j] = minid;
dis[j] = mp[minid][j];
}
}
}
return res;
} int main(){
scanf("%d", &t);
while( t-- ){
scanf("%d%d", &n, &m);
memset( mp, inf, sizeof(mp) );
for( int i=; i<m; i++ ){
int u, v, w;
scanf("%d%d%d", &u, &v, &w);
mp[u][v] = mp[v][u] = w;
}
int min_ans = prim(), ans = inf;
if( min_ans==- ){ printf("Not Unique!\n"); continue; } //不存在最小生成树
for( int i=; i<=n; i++ )
for( int j=i+; j<=n; j++ )
if( mp[i][j]!=inf && !used[i][j] )
ans = min( ans, min_ans+mp[i][j]-MAX[i][j] );
if( ans==min_ans ) printf("Not Unique!\n");
else printf("%d\n", min_ans);
} return ;
}
poj1679The Unique MST(次小生成树模板)的更多相关文章
- POJ_1679_The Unique MST(次小生成树模板)
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 23942 Accepted: 8492 D ...
- POJ-1679 The Unique MST,次小生成树模板题
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Description Given a connected undirec ...
- POJ1679 The Unique MST —— 次小生成树
题目链接:http://poj.org/problem?id=1679 The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total S ...
- POJ1679 The Unique MST[次小生成树]
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 28673 Accepted: 10239 ...
- POJ 1679 The Unique MST (次小生成树 判断最小生成树是否唯一)
题目链接 Description Given a connected undirected graph, tell if its minimum spanning tree is unique. De ...
- 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 (次小生成树)
题目链接:http://poj.org/problem?id=1679 有t组数据,给你n个点,m条边,求是否存在相同权值的最小生成树(次小生成树的权值大小等于最小生成树). 先求出最小生成树的大小, ...
- POJ 1679 The Unique MST (次小生成树kruskal算法)
The Unique MST 时间限制: 10 Sec 内存限制: 128 MB提交: 25 解决: 10[提交][状态][讨论版] 题目描述 Given a connected undirect ...
- poj 1679 The Unique MST (次小生成树(sec_mst)【kruskal】)
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 35999 Accepted: 13145 ...
随机推荐
- [PHP] 浅谈 Laravel Authentication 的 guards 与 providers
从文档的简单介绍上来讲,有一些抽象. 个人感觉,对于概念上的大多数不理解主要还是来自于 文档不是讲设计思路,而是实际操作. 查看英文文档,通常来说可以给你最准确的直觉,而本地翻译一般比较字面或者带有理 ...
- 【Spring Boot学习之四】Spring Boot事务管理
环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2 一.springboot整合事务事务分类:编程事务.声明事务(XML.注解),推荐使用注解方式,springboot默 ...
- maven 国内镜像
<mirrors> <!-- mirror | Specifies a repository mirror site to use instead of a given reposi ...
- PHP表单select中有0选项的处理
<div class="layui-inline"> <label class="layui-form-label">是否锁定</ ...
- Instance Variable Hiding in Java
class Test { // Instance variable or member variable private int value = 10; void method() { // This ...
- collections模块之defaultdict()与namedtuple()方法简单介绍
一.defaultdict() 作用:根据数据创建字典时,需要为一些数据生成字典,而且对值得类型进行限定的时候,考虑defaultdict from collections import defaul ...
- golang函数式编程
- sqlserver通过递归查找所有下级或上级部门和用户的操作实例
--查找当前用户所在部门的所有下级包括当前部门 with cte as ( as lvl from Department union all from cte c inner join Departm ...
- 2019 完美世界java面试笔试题 (含面试题解析)
本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.完美世界等公司offer,岗位是Java后端开发,最终选择去了完美世界. 面试了很多家公司,感觉大部分公司考察的点 ...
- 文件包含漏洞File Inclusion
文件包含漏洞 目录遍历漏洞在国内外有许多不同的叫法,也可以叫做信息泄露漏洞.非授权文件包含漏洞等. 文件包含分类 LFI:本地文件包含(Local File Inclusion) RFI:远程文件包含 ...