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求最小生成树,标记用过的边.求次小生成树时,依次枚举用过的边,将其去除后再求最小生成树,得出所有情况下的最小的生成树就 ...
随机推荐
- jquery中的jsonp跨域调用(接口)
jquery jsonp跨域调用接口
- 【codeforces 749D】Leaving Auction
[题目链接]:http://codeforces.com/problemset/problem/749/D [题意] 有n个人在竞价; 按照时间的顺序给出n次竞价(可能有一些人没有参加竞价); 每次竞 ...
- ASP.NET-使用json
数据格式 vat strJson =' {"name":"jingya","Age":88} '; // 数字不用写双引号 JSON.par ...
- ASP.NET-关于Global.asax的作用
这个文件相当于一个应用程序量级的 全局文件,比如你想写一个变量在项目中的所有文件中都能读取是就写在这里面 Application["name"] = "zhangran& ...
- 数据库联表统计查询 Group by & INNER JOIN
原数据表 视频信息表 tab_video_info 播放记录表 tab_play_record 需求 统计播放量(已经开始播放)最多的前20个视频: SELECT a.video_id, SUM( ...
- Qt之命令行参数
简述 在Qt之进程间通信(QProcess)一节,我们讲解了如何通过QProcess来进行进程间的通信.主要通过启动外部程序,然后通过命令行的方式传递参数. 这里,我们可以通过Qt Creator来设 ...
- 怎样注冊 diskgroup 到集群
之前使用 renamedg 对 ora.CRS.dg 进行重命名ora.DUPCRS.dg 可是 renamedg 有个缺点就是无法将改动的信息同步到整个集群层面,并且改动前的dg 会依旧保留在集群 ...
- 复习昨天的,继续过Hard题目
# Title Editorial Acceptance Difficulty Frequency . 65 Valid Number 12.6% Hard . 126 Word ...
- MongoDB创建\更新\删除文档操作
一.插入\创建文档 --当插入一个不存在的文档时,会自己主动创建一个文档 [root@racdb ~]# mongo MongoDB shell version: 2.4.14 connecti ...
- NYOJ 915 +-字符串【贪心】
+-字符串 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描写叙述 Shiva得到了两个仅仅有加号和减号的字符串,字串长度同样.Shiva一次能够把一个加号和它相邻的减号交换 ...