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 ...
随机推荐
- 构建工具Gulp
前面的话 与grunt类似,gulp也是构建工具,但相比于grunt的频繁IO操作,gulp的流操作能更快更便捷地完成构建工作.gulp借鉴了Unix操作系统的管道(pipe)思想,前一级的输出,直接 ...
- <iOS 组件与框架> -- UIKit Dynamics
UIKit Dynamics 结合 『iOS 组件与框架 』一书.总结的知识点与demo demo 地址: GitHub地址 一.概述 1.UIKit Dynamics 是 iOS 7 新增的内容.其 ...
- JS学习笔记——JavaScript继承的6种方法(原型链、借用构造函数、组合、原型式、寄生式、寄生组合式)
JavaScript继承的6种方法 1,原型链继承 2,借用构造函数继承 3,组合继承(原型+借用构造) 4,原型式继承 5,寄生式继承 6,寄生组合式继承 1.原型链继承. <script t ...
- webpack实用配置
前面的话 上文介绍了webpack入门,本文将详细介绍webpack实用配置 版本号 以entry.js打包为bundle.js为例,出口的filename可以设置为[id].[name].[hash ...
- Eclipse导出JavaDoc中文乱码问题解决
在Eclipse里 export 选 JavaDoc,在向导的最后一页的Extra JavaDoc Options 里填上参数即可 比如项目采用的是UTF-8的编码就填:-encoding UTF-8 ...
- Spring学习资料以及配置环境
一.Spring4 1.介绍 新特性 SpringIDE 插件 IOC DI 在 Spring 中配置 Bean 自动装配 Bean 之间的关系(依赖.继承) Bean 的作用域 使用外部属性文件 S ...
- ant使用
摘录于他人精华,原文出处http://www.blogjava.net/hoojo/archive/2013/06/14/400550.html 1.project 节点元素 project 元素是 ...
- Linux下如何启动svn服务器
service svnserve start 启动服务 service svnserve stop 停止服务 service svnserve restart 重启服务 rpm -e --nodeps ...
- 后端对数组json_encode,前端遍历输出
echo json_encode($get_city_lists); <script type="text/javascript"> function get_city ...
- mysql 左连接 右连接 内链接
一般所说的左连接,右连接是指左外连接,右外连接.做个简单的测试你看吧.先说左外连接和右外连接:[TEST1@orcl#16-12月-11] SQL>select * from t1;ID NAM ...