博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
COGS 1578. 次小生成树初级练习题
阅读量:5090 次
发布时间:2019-06-13

本文共 878 字,大约阅读时间需要 2 分钟。

☆   输入文件:mst2.in   输出文件:mst2.out   简单对比

时间限制:1 s   内存限制:256 MB

【题目描述】

求严格次小生成树

【输入格式】

第一行包含两个整数N 和M,表示无向图的点数与边数。 接下来 M行,每行 3个数x y z 表示,点 x 和点y之间有一条边,边的权值为z。

【输出格式】

包含一行,仅一个数,表示严格次小生成树的边权和。(数据保证必定存在严格次小生成树)

【样例输入】

5 6

1 2 1

1 3 2

2 4 3

3 5 4

3 4 3

4 5 6

【样例输出】

11

【提示】

数据中无向图无自环; 50% 的数据N≤2 000 M≤3 000; 80% 的数据N≤50 000 M≤100 000; 100% 的数据N≤100 000 M≤300 000 ,边权值非负且不超过 10^9 。

【来源】

bzoj。。。

 

求次小生成树的两种方法

1:首先求出最小生成树T,然后枚举最小生成树上的边,计算除了枚举的当前最小

生成树的边以外的所有边形成的最小生成树Ti,然后求最小的Ti就是次小生成树。
2:首先计算出最小生成树T,然后对最小生成树上任意不相邻的两个点 (i,j)
添加最小生成树以外的存在的边形成环,然后寻找i与j之间最小生成树上最长的边删去,
计算map[i][j](最小生成树以外存在的边) 与 maxd[i][j](最小生成树上最长的边)
差值,求出最小的来,w(T)再加上最小的差值就是次小生成树了。

此代码采用的是第一种 

#include 
#include
#define M 300500#define N 100500using namespace std;struct Edge{ int x,y,z; bool operator<(Edge a)const { return z

 

转载于:https://www.cnblogs.com/ruojisun/p/7392188.html

你可能感兴趣的文章
jQuery 图片轮播的代码分离
查看>>
疯狂,千人抢“幸福”,引微博万人围观
查看>>
vue中 父子组件的通讯
查看>>
GridView如何实现双击行进行编辑,更新
查看>>
LINUX 命令行编辑快捷键
查看>>
redis持久化RDB与AOF
查看>>
信息化基础建设 开发框架
查看>>
讲给普通人听的分布式数据存储【转载】
查看>>
ASIHTTPRequest是什么?
查看>>
将博客搬至CSDN
查看>>
数据结构:散列函数的构造方法
查看>>
(C++)String的用法
查看>>
MVC 3 HTML 编码
查看>>
Knockout学习之前言
查看>>
php中使用swoole实现头协议
查看>>
Redis全方位讲解--哨兵模式(Sentinel模式)
查看>>
src 和 href 区别(转载)
查看>>
鱼C《零基础入门学习Python》10-17节课时知识点总结
查看>>
简单的python http接口自动化脚本
查看>>
C# 导出Excel的示例
查看>>