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 ...
随机推荐
- 【NPDP笔记】第三章 新产品流程
3.1 产品开发,风险与汇报的过程,开发实践和流程提升成功率 管控新产品失败的风险,随着成本增加,风险降低 知识能改改进决策,降低风险,决策框架 识别问题与机会 收集信息 组织记录,组织员工 外部 ...
- [分享会] 微服务框架设计 (基于Swoole)
框架三要素 1. Service 通信 2. 服务管理 3. 开发组件 为什么需要服务 1.自治性 2.可组合 3.异构性 2.弹性扩展 -实现方式- 共享库 1.二进制文件/Compos ...
- socks5 代理服务器ss5配置
安装 yum install pam-devel openldap-devel openssl-devel yum -y install gcc automake make pam-devel ope ...
- 学习 Git Rebase
有问题为什么不问问神奇的 man 呢? rebase 也算是我比较常用的一个指令了,但是很长时间以来,对这个指令的认识还是不够深刻,于是就找了个时间认真地读了一下 git rebase 的文档.这份文 ...
- Keyboarding
题目描述 思路 一开始想先写一个bfs,目标字符串要加上一个'*',表示这是一个换行符,然后一个字母一个字母的找,每次重置一下vis数组,bfs返回的结果再加上1,表示要打印这个字母,结果第一个样例没 ...
- Oracle--(Hierarchical Queries)层级查询(用于部门层级等)
原网址:https://www.cnblogs.com/guofeiji/p/5291486.html 如果表中包含层级数据,可以使用层级查询子句按层级顺序选择数据行,形成层级树,形式如下: 下面是层 ...
- Spring boot java.lang.NoClassDefFoundError: org/springframework/boot/bind/RelaxedPropertyResolver
Spring boot 2.0.3 RELEASE 配置报错 java.lang.NoClassDefFoundError: org/springframework/boot/bind/Relaxed ...
- Java11新特性 - 标准Java异步HTTP客户端
Java9开始引入的一个处理 HTTP 请求的的 HTTP Client API,该 API 支持同步和异步,而在 Java 11 中已经为正式可用状态,你可以在 java.net 包中找到这个 AP ...
- Unity - 绘制正五边形网格
本文简述了Unity中绘制正五边形网格的基本方法:计算顶点信息.设置三角形覆盖信息.创建配置mesh 绘制方法 基本思路:计算出五边形顶点坐标信息作为数组,设置三角形包围方式,再创建新的mesh配置v ...
- C# vb .net实现焦距柔化特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的焦距柔化效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...