COGS——T 1578. 次小生成树初级练习题
http://www.cogs.pro/cogs/problem/problem.php?pid=1578
☆ 输入文件: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。。。
#include <algorithm>
#include <cstring>
#include <cstdio> using namespace std; const int INF(0x7fffffff);
const int N();
struct Edge
{
int u,v,w;
bool operator < (const Edge &x) const
{
return w<x.w;
}
}edge[N];
int n,m,fa[N],used[N]; int find(int x)
{
return x==fa[x]?x:x=find(fa[x]);
} inline int k(int cant)
{
int ret=,cnt=,fx,fy;
for(int i=;i<=n;i++) fa[i]=i;
for(int i=;i<=m;i++)
{
if(i==cant) continue;
fx=find(edge[i].u),fy=find(edge[i].v);
if(fa[fx]==fy) continue;
fa[fx]=fy;
ret+=edge[i].w;
if(++cnt==n-) return ret;
}
return INF;
} inline void read(int &x)
{
register char ch=getchar();x=;
for(;ch>''||ch<'';) ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-'';
}
int AC()
{
freopen("mst2.in","r",stdin);
freopen("mst2.out","w",stdout); read(n),read(m);
for(int i=;i<=m;i++)
{
read(edge[i].u);
read(edge[i].v);
read(edge[i].w);
}
sort(edge+,edge+m+);
int Fir_min=,Sec_min=INF,tmp,cnt=;
for(int i=;i<=n;i++) fa[i]=i;
for(int fx,fy,i=;i<=m;i++)
{
fx=find(edge[i].u);
fy=find(edge[i].v);
if(fa[fx]==fy) continue;
fa[fx]=fy;
Fir_min+=edge[i].w;
used[++cnt]=i;
if(cnt==n-) break;
}
for(int i=;i<=cnt;i++)
{
tmp=k(used[i]);
if(tmp>Fir_min&&tmp<Sec_min)
Sec_min=tmp;
}
printf("%d\n",Sec_min);
return ;
} int I_want_AC=AC();
int main(){;}
COGS——T 1578. 次小生成树初级练习题的更多相关文章
- cogs——1578. 次小生成树初级练习题
1578. 次小生成树初级练习题 ☆ 输入文件:mst2.in 输出文件:mst2.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 求严格次小生成树 [输入格式 ...
- COGS 1578. 次小生成树初级练习题
☆ 输入文件:mst2.in 输出文件:mst2.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 求严格次小生成树 [输入格式] 第一行包含两个整数N 和M,表 ...
- cogs P1578【模板】 次小生成树初级练习题
1578. 次小生成树初级练习题 ☆ 输入文件:mst2.in 输出文件:mst2.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 求严格次小生成树 [输入格式 ...
- [BJOI2010]次小生成树
OJ题号: BZOJ1977.COGS2453 题目大意: 给你一个无向连通图,求严格次小生成树. 思路: 对于一般次小生成树,我们有一个结论:一般次小生成树一定可以通过替换掉最小生成树某一条边得到. ...
- [Luogu] 次小生成树
https://www.luogu.org/problemnew/show/P4180#sub 严格次小生成树,即不等于最小生成树中的边权之和最小的生成树 首先求出最小生成树,然后枚举所有不在最小生成 ...
- HDU 4081Qin Shi Huang's National Road System(次小生成树)
题目大意: 有n个城市,秦始皇要修用n-1条路把它们连起来,要求从任一点出发,都可以到达其它的任意点.秦始皇希望这所有n-1条路长度之和最短.然后徐福突然有冒出来,说是他有魔法,可以不用人力.财力就变 ...
- POJ1679 The Unique MST[次小生成树]
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 28673 Accepted: 10239 ...
- The Unique MST(次小生成树)
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22335 Accepted: 7922 Description Give ...
- URAL 1416 Confidential --最小生成树与次小生成树
题意:求一幅无向图的最小生成树与最小生成树,不存在输出-1 解法:用Kruskal求最小生成树,标记用过的边.求次小生成树时,依次枚举用过的边,将其去除后再求最小生成树,得出所有情况下的最小的生成树就 ...
随机推荐
- Python中的itertools.product
例子1:import itertoolsa = itertools.product([1,2,3],[100,200])print(a)for item in itertools.product([1 ...
- 开放个人电脑端口[Windows]
先打开控制面板
- 浅谈 Qt 布局那些事
Qt 布局那些事是本文介绍的内容,直接进入主题.GridLayout是一个非常强大的布局管理器,它可以实现很多复杂的布局,名字中暗示它将所有控件放置在类似网格的布局中.^__^GridLayout有两 ...
- 简单实现双向数据绑定mvvm。
- UVALive 2664 One-way traffic
One-way traffic Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVALive. Or ...
- HTML---经常使用标签总结与实践
什么是HTML? 超文本标记语言,标准通用标记语言下的一个应用. "超文本"就是指页面内能够包括图片.链接,甚至音乐.程序等非文字元素. 超文本标记语言的结构包含" ...
- [Unit Testing] Configure the Angular CLI to use the Karma Mocha test reporter
Every Angular CLI generated project comes already with Karmapreinstalled as well a couple of executa ...
- STM32系列ARM单片机介绍
STM32系列基于专为要求高性能.低成本.低功耗的嵌入式应用专门设计的ARM Cortex-M3内核.按性能分成两个不同的系列:STM32F103"增强型"系列和STM32F101 ...
- c# 获取一年中的周/根据一年中的第几周获取该周的开始日期与结束日期
/// <summary> /// 获取一年中的周 /// </summary> /// <param name="dt">日期</par ...
- .net中的目录
System.Environment.CurrentDirectory Application.StartupPath https://msdn.microsoft.com/en-us/library ...