poj_1679: The Unique MST【次小生成树】
希望注释足够清楚。。欢迎指出不足~
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
;
const int INF=0x3f3f3f3f;
int n,m;
int mp[maxn][maxn];
int maxlen[maxn][maxn]; //maxlen[i][j]表示
//生成树上,从 点i到点j的所有边中的最大边长
int dis[maxn],pre[maxn]; //dis表示的其实是边长
int vis[maxn];
int mst;
int prim()
{
mst=;
vis[]=;
; i<=n; i++)
dis[i]=mp[][i],pre[i]=;
; i<n; i++) //总共需要再加入n-1个节点
{
int min_dis=INF,nx,pr;
//nx表示下一个要进入MST中的结点
//pr表示与nx相连的已经在MST中的结点
//min_dis表示MST与V-MST间的最短距离
; j<=n; j++)
if(!vis[j]&&dis[j]<min_dis)
nx=j,min_dis=dis[nx];
pr=pre[nx];
mst+=mp[nx][pr];
maxlen[nx][pr]=maxlen[pr][nx]=mp[nx][pr];
; j<=n; j++) if(vis[j]) //更新从j沿MST到nx的最小边长
maxlen[j][nx]=maxlen[nx][j]=max(maxlen[j][pr],maxlen[nx][pr]);
vis[nx]=;
;j<=n;j++)
if(!vis[j]&&mp[nx][j]<dis[j])
dis[j]=mp[nx][j],pre[j]=nx;
}
;i<n;i++)
;j<=n;j++)
if(pre[i]==j||pre[j]==i) //此时边i-j在MST中
continue;
else if(maxlen[i][j]==mp[i][j])//存在不止一个MST
;
; //只有一个MST
}
void init()
{
memset(mp,INF,sizeof(mp));
memset(maxlen,-INF,sizeof(maxlen)); //之后要不断取max进行更新
memset(vis,,sizeof(vis));
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
init();
scanf("%d%d",&n,&m);
; i<m; i++)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
mp[u][v]=mp[v][u]=w;
}
if(prim()) printf("%d\n",mst);
else puts("Not Unique!");
}
}
poj_1679: The Unique MST【次小生成树】的更多相关文章
- 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 ...
- POJ1679 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 Time Limit: 1000MS Memory Limit: 10000K Description Given a connected undirec ...
- 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 (次小生成树)
题目链接:http://poj.org/problem?id=1679 有t组数据,给你n个点,m条边,求是否存在相同权值的最小生成树(次小生成树的权值大小等于最小生成树). 先求出最小生成树的大小, ...
- poj1679The Unique MST(次小生成树模板)
次小生成树模板,别忘了判定不存在最小生成树的情况 #include <iostream> #include <cstdio> #include <cstring> ...
- 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 ...
随机推荐
- 38. Count and Say - Unsolved
https://leetcode.com/problems/count-and-say/#/description The count-and-say sequence is the sequence ...
- charles抓包,打断点,连接手机抓包
写给我自己: 如果是使用charles抓包.一定要tm的保证手机和电脑连的是一个网. charles抓本地包的操作 1.打开charles, 2.打开浏览器访问某网页,就可抓到对应的包 charles ...
- asp.net core 教程(四)-项目结构
Asp.Net Core-项目结构 Asp.Net Core-项目结构 案例 在这一章,我们将讨论 ASP.NET Core项目在文件系统上的组成方式以及不同的文件和目录都是如何协同工作的. 让我们打 ...
- LANMP一键安装包 版本服务任你选 可安装单一服务
介绍与使用 更多内容请到 乌龟运维 wuguiyunwei.com 请保证在系统原有yum源文件存在的情况下运行此脚本 以下以centos7.3为例: 下面以安装LNMP为例: ? 1 wget ht ...
- iOS的内存分析和内存管理
iOS的内存分析和内存管理 [内存管理]一直是iOS开发中的一个重点. 本文就带你从内存分析开始一步步了解内存的占用情况,从真实的情况中领悟真正项目开发过程中的内存的使用情况. 注:本文默认你熟悉 M ...
- [1] 插件架构(PLUG-IN)
网上的一种比较好对插件的定义是:插件(Plug-in,又称addin.add-in.addon或add-on,又译外挂)也称为扩展,是一种遵循一定规范的应用程序接口编写出来的程序,主要是用来扩展软件功 ...
- 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)
编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...
- 在CentOS7下安装jekyll
[root@k8smaster nodejs]# yum install gem ruby ruby-devel -y [root@k8smaster nodejs]# gem sources -l ...
- 探索Windows命令行系列(2):命令行工具入门
1.理论基础 1.1.命令行的前世今生 1.2.命令执行规则 1.3.使用命令历史 2.使用入门 2.1.启动和关闭命令行 2.2.执行简单的命令 2.3.命令行执行程序使用技巧 3.总结 1.理论基 ...
- mac+phpstorm增加xdebug调试
一.版本信息 mac 10.10.5 phpstorm 10.0.3 xdebug 版本需要与phpstorm匹配,匹配地址 点我匹配 点我查看所有版本 提示:不确定xdebug版本的,把php ...