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 ...
随机推荐
- node.js 开发环境配置 和使用方式
1.在根目录创建一个文件夹 里面 放入js 编写完成后使用 cmd 进行编译就可以了2.expree 安装 卸载: npm uninstall -g express 安装指定版本: npm i ...
- CentOS6.8安装python2.7以及XX-Net
xx-net在ubuntu上运行用起来很方便,如果有一些原因必须用CentOS,麻烦就比较大了. 首先需要升级python版本,CentOS自带的2.6版本是用不了的,必须升级到2.7以上,但是不能用 ...
- jquery实现导航栏效果
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...
- java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleExcept问题解决方案
在部署Dynamic Web Project时,如果正确配置web.xml或者标注时,仍然出现以上异常的话,可以尝试以下内容讲解的方法: 首先,双击eclipse中的servers,位置如下图&quo ...
- [转] SOLID五大设计原则
我们知道,面向对象对于设计出高扩展性.高复用性.高可维护性的软件起到很大的作用.我们常说的SOLID五大设计原则指的就是: S = 单一职责原则 Single Responsibility ...
- eclispe JavaEE 配置tomcat
http://blog.csdn.net/hongshan50/article/details/8293526 http://blog.csdn.net/longshengguoji/article/ ...
- react-router 踩坑记
react-router踩坑分享 背景 辛苦历程 JavaScript动态修改 第一次尝试 第二次尝试 第三次尝试 第四次尝试 总结步骤 其他方案 原理 History 常见的3种History Br ...
- JavaScript学习笔记(散)——addLoadEvent函数
先贴源码 function addLoadEvent(func) { var oldonload = window.onload; //存入当前onload事件 if(typeof window.on ...
- c# webbrower 代理 类 IEProxy
using System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices ...
- 【原创】 Docker 中 运行 ASP.NET Core 站点
一. 建立 .NetCore 项目 a.新建项目 b.选择项目类型 c.添加控制器 d.添加视图 e.修改默认请求 f.发布 二. 准备 CentOS 环境 a.准备虚拟机 b.安装 docker ...