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

【样例输出】

  1. 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. #include <algorithm>
  2. #include <cstring>
  3. #include <cstdio>
  4.  
  5. using namespace std;
  6.  
  7. const int INF(0x7fffffff);
  8. const int N();
  9. struct Edge
  10. {
  11. int u,v,w;
  12. bool operator < (const Edge &x) const
  13. {
  14. return w<x.w;
  15. }
  16. }edge[N];
  17. int n,m,fa[N],used[N];
  18.  
  19. int find(int x)
  20. {
  21. return x==fa[x]?x:x=find(fa[x]);
  22. }
  23.  
  24. inline int k(int cant)
  25. {
  26. int ret=,cnt=,fx,fy;
  27. for(int i=;i<=n;i++) fa[i]=i;
  28. for(int i=;i<=m;i++)
  29. {
  30. if(i==cant) continue;
  31. fx=find(edge[i].u),fy=find(edge[i].v);
  32. if(fa[fx]==fy) continue;
  33. fa[fx]=fy;
  34. ret+=edge[i].w;
  35. if(++cnt==n-) return ret;
  36. }
  37. return INF;
  38. }
  39.  
  40. inline void read(int &x)
  41. {
  42. register char ch=getchar();x=;
  43. for(;ch>''||ch<'';) ch=getchar();
  44. for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-'';
  45. }
  46. int AC()
  47. {
  48. freopen("mst2.in","r",stdin);
  49. freopen("mst2.out","w",stdout);
  50.  
  51. read(n),read(m);
  52. for(int i=;i<=m;i++)
  53. {
  54. read(edge[i].u);
  55. read(edge[i].v);
  56. read(edge[i].w);
  57. }
  58. sort(edge+,edge+m+);
  59. int Fir_min=,Sec_min=INF,tmp,cnt=;
  60. for(int i=;i<=n;i++) fa[i]=i;
  61. for(int fx,fy,i=;i<=m;i++)
  62. {
  63. fx=find(edge[i].u);
  64. fy=find(edge[i].v);
  65. if(fa[fx]==fy) continue;
  66. fa[fx]=fy;
  67. Fir_min+=edge[i].w;
  68. used[++cnt]=i;
  69. if(cnt==n-) break;
  70. }
  71. for(int i=;i<=cnt;i++)
  72. {
  73. tmp=k(used[i]);
  74. if(tmp>Fir_min&&tmp<Sec_min)
  75. Sec_min=tmp;
  76. }
  77. printf("%d\n",Sec_min);
  78. return ;
  79. }
  80.  
  81. int I_want_AC=AC();
  82. int main(){;}

COGS——T 1578. 次小生成树初级练习题的更多相关文章

  1. cogs——1578. 次小生成树初级练习题

    1578. 次小生成树初级练习题 ☆   输入文件:mst2.in   输出文件:mst2.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 求严格次小生成树 [输入格式 ...

  2. COGS 1578. 次小生成树初级练习题

    ☆   输入文件:mst2.in   输出文件:mst2.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 求严格次小生成树 [输入格式] 第一行包含两个整数N 和M,表 ...

  3. cogs P1578【模板】 次小生成树初级练习题

    1578. 次小生成树初级练习题 ☆   输入文件:mst2.in   输出文件:mst2.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 求严格次小生成树 [输入格式 ...

  4. [BJOI2010]次小生成树

    OJ题号: BZOJ1977.COGS2453 题目大意: 给你一个无向连通图,求严格次小生成树. 思路: 对于一般次小生成树,我们有一个结论:一般次小生成树一定可以通过替换掉最小生成树某一条边得到. ...

  5. [Luogu] 次小生成树

    https://www.luogu.org/problemnew/show/P4180#sub 严格次小生成树,即不等于最小生成树中的边权之和最小的生成树 首先求出最小生成树,然后枚举所有不在最小生成 ...

  6. HDU 4081Qin Shi Huang's National Road System(次小生成树)

    题目大意: 有n个城市,秦始皇要修用n-1条路把它们连起来,要求从任一点出发,都可以到达其它的任意点.秦始皇希望这所有n-1条路长度之和最短.然后徐福突然有冒出来,说是他有魔法,可以不用人力.财力就变 ...

  7. POJ1679 The Unique MST[次小生成树]

    The Unique MST Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 28673   Accepted: 10239 ...

  8. The Unique MST(次小生成树)

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22335   Accepted: 7922 Description Give ...

  9. URAL 1416 Confidential --最小生成树与次小生成树

    题意:求一幅无向图的最小生成树与最小生成树,不存在输出-1 解法:用Kruskal求最小生成树,标记用过的边.求次小生成树时,依次枚举用过的边,将其去除后再求最小生成树,得出所有情况下的最小的生成树就 ...

随机推荐

  1. html全屏显示

    JavaScript代码: function toggleFullScreen() { if (!document.fullscreenElement && // alternativ ...

  2. [剑指offer] 5. 用两个栈实现队列+[剑指offer]30. 包含min函数的栈(等同于leetcode155) +[剑指offer]31.栈的压入、弹出序列 (队列 栈)

    c++里面stack,queue的pop都是没有返回值的, vector的pop_back()也没有返回值. 思路: 队列是先进先出 , 在stack2里逆序放置stack1的元素,然后stack2. ...

  3. OO第一单元总结__多项式求导问题

    作业一.含幂函数的简单多项式的求导 (1)基于度量的程序结构分析 1. 统计信息图: 2. 结构信息图: 3. 复杂度分析 基本复杂度(Essential Complexity (ev(G)).模块设 ...

  4. Cocos2d-x 多点触摸

    多点触摸的实现步骤与单点触摸类似,setTouchEnabled(true)开启触摸功能,注冊触摸事件,重载多点触摸函数:ccTouchesBegan(開始).ccTouchesMoved(移动).c ...

  5. WebRTC代码走读(八):代码文件夹结构

    转载注明出处http://blog.csdn.net/wanghorse ├── ./base //基础平台库,包含线程.锁.socket等 ├── ./build //编译脚本.gyp ├── ./ ...

  6. 集群版本升级——rolling upgrade在ES 单节点从 restart 到加入集群,大概要 100s 左右的时间。也就是说,这 100s 内,该节点上的所有分片都是 unassigned 状态

    集群版本升级 Elasticsearch 作为一个新兴项目,版本更新非常快.而且每次版本更新都或多或少带有一些重要的性能优化.稳定性提升等特性.可以说,ES 集群的版本升级,是目前 ES 运维必然要做 ...

  7. caffe中LetNet-5卷积神经网络模型文件lenet.prototxt理解

    caffe在 .\examples\mnist文件夹下有一个 lenet.prototxt文件,这个文件定义了一个广义的LetNet-5模型,对这个模型文件逐段分解一下. name: "Le ...

  8. [JZOJ 5437] [NOIP2017提高A组集训10.31] Sequence 解题报告 (KMP)

    题目链接: http://172.16.0.132/senior/#main/show/5437 题目: 题解: 发现满足上述性质并且仅当A序列的子序列的差分序列与B序列的差分序列相同 于是我们把A变 ...

  9. 17.广度优先遍历bfs

    #include <iostream> #include <boost/config.hpp> //图(矩阵实现) #include <boost/graph/adjac ...

  10. winforms控件

     我们在开发窗体应用时,控件是必不可少的今天我们就来认识一下控件 在认识控件之前还要先来认识一下窗体具体如下: 认识窗体和控件 窗体                                   ...