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 ...
随机推荐
- Windows7 安装完成mysql dos启动服务出现服务名称无效
错误提示: WIN 7 cmd命令行下,net start mysql,出现 服务名无效提示: 错误分析: Mysql服务未安装 解决方案:在mysql 安装目录下bin文件夹 安装Shift+鼠 ...
- Bootstrap & 响应式
要了解一个东西 就是要知道 它是什么? 干什么 ? 怎么用 ? 1.Bootstrap 简介 Bootstrap 是由Twitter(著名的社交网站)推出的前端开源工具包,它基于Html.CSS. ...
- 安装Mysql5.7并修改初始密码
Centos 安装MySQL可以参考之前写的一篇文章 Centos7.3 安装Mysql5.7并修改初始密码 windows安装mysql5.7有两种方式 1.下载.msi安装文件直接根据界面提示进行 ...
- CI 数据库使用积累
CI 数据库使用积累 一. or_like使用 情景:WMS库存列表过滤器通过产品名称或者SKU查询. 通常此情况采用CI框架提供的or_like语句,如 $this->db-> ...
- [转]Java多线程学习(吐血超详细总结)
转自:http://www.mamicode.com/info-detail-517008.html 本文主要讲了Java中多线程的使用方法.线程同步.线程数据传递.线程状态及相应的一些线程函数用法. ...
- [0] C#异常种类
c#中异常捕获catch{}常用的异常类型 Exception 类 描述 SystemException 其他用户可处理的异常的基本类 ArgumentException 方法的参数是非法的 Arg ...
- Access denied for user 'root'@'localhost' (using password: NO)错误的解决方案
在windows下使用PHP连接MYSQL数据库,确定MYSQL的服务已经启动了,而且Workbench也是可以连上去的,但是始终网页测试都提示Access Denied. 最终解决办法: set p ...
- 下载旧版chrome
问题描述: xp只能使用chrome 49及其之前的版本,去哪里下载? 解决办法: 1. 在这里 http://www.slimjet.com/chrome/google-chrome-old-ver ...
- 双核 CPU
双核 CPU 时间限制: 1 Sec 内存限制: 128 MB 题目描述 由于越来越多的计算机配置了双核 CPU,TinySoft 公司的首席技术官员,SetagLilb,决定升级他们的产品-SWO ...
- iOS 转场动画探究(二)
这篇文章是接着第一篇写的,要是有同行刚看到的话建议从前面第一篇看,这是第一篇的地址:iOS 转场动画探究(一) 接着上一篇写的内容: 上一篇iOS 转场动画探究(一)我们说到了转场要素的第四点,把那个 ...