Description

给出N个顶点、E条边的连通无向简单图,请你完成下列任务: 任务1、求边权和最小的生成树(最小生成树) 任务2、求边权和最大的生成树(最大生成树) 任务3、求最大边最小的生成树(瓶颈生成树) 任务4、求最小边最大的生成树(瓶颈生成树)


Input

第一行:两个整数N,E(N<=50000,E<=100000),分别表示有N个新岛,E对能直接用电缆连接的岛屿,其中主岛为1。接下来M行:每行三个数u,v,w,1<=u,v<=N,表示岛屿u和v之间可以直接用电缆连接,距离为w(<=100000)。


Output

第一行一个整数,表示最小生成树的边权和;第二行一个整数,表示最大生成树的边权和;第三行一个整数,表示最大边最小的生成树中,最大边的权值;第四行一个整数,表示最小边最大的生成树中,最小边的权值;


Hint

N<=50000,E<=100000


Solution

注意事项: 1.这个就像有向图那么存就可以了不然排序可能有边排不到,不然用2*m应该也行吧。 2.循环注意=号。 3.并查集的union修改的是父亲的值,如果只修改x,y的值父亲的值就没有被修改到。 4.应该是要用long long的只不过数据太弱了。

#include<cstring>
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#define maxn 100005
#define inf 0x3f3f3f3f
using namespace std;
struct Edge{int u;int v;int w;int next;friend bool operator < (Edge a,Edge b){return a.w<b.w;}
}edge[maxn];
int first[maxn],last[maxn],FA[maxn];
int node,n,m,x,y,z,cnt;
int ans1,ans2,ans3,ans4;
void addedge(int u,int v,int w){edge[++node]=(Edge){u,v,w,0};if(first[u]==0)first[u]=node;else edge[last[u]].next=node;last[u]=node;
}
void init(){scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%d%d%d",&x,&y,&z);addedge(x,y,z);}for(int i=1;i<=n;i++){FA[i]=i;}
}
int dofind(int x){if(FA[x]==x)return x;return FA[x]=dofind(FA[x]);
}
void dounion(int x,int y){int dx=dofind(x),dy=dofind(y);if(dx!=dy){FA[dx]=FA[dy];}
}
bool dofinD(int x,int y){int dx=dofind(x),dy=dofind(y);return dx==dy;
}
void kruskal(){sort(edge+1,edge+m+1);for(int i=1;i<=m;i++){int a=edge[i].u,b=edge[i].v;if(dofinD(a,b))continue;dounion(a,b);ans1+=edge[i].w;ans2=edge[i].w;cnt++;if(cnt==n-1)break;}cnt=0;for(int i=1;i<=n;i++){FA[i]=i;}for(int i=m;i>=1;i--){int a=edge[i].u,b=edge[i].v;if(dofinD(a,b))continue;dounion(a,b);ans3+=edge[i].w;ans4=edge[i].w;cnt++;if(cnt==n-1)break;}
}
int main(){init();kruskal();printf("%d\n%d\n%d\n%d\n",ans1,ans3,ans2,ans4);return 0;
}

转载于:https://www.cnblogs.com/virtual-north-Illya/p/10045223.html

最小生成树模板题 P1692相关推荐

  1. 最小生成树(模板题:最优布线问题,繁忙的都市,联络员)(C++)

    文章目录 序言 正文 First Promble 最优布线问题 时间限制: 1000 m s 1000 ms 1000ms 空间限制: 262144 K B 262144 KB 262144KB 题目 ...

  2. 天空之城(最小生成树模板题)

    题目描述 **链接:https://ac.nowcoder.com/acm/contest/9986/J 来源:牛客网 天空之城有5个小镇,名字分别为Ada, Aed, Akk, Orz, Apq,他 ...

  3. POJ3164 最小树形图 有向图的最小生成树 模板题 朱刘算法 朱永津-刘振宏算法

    Command Network Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 12833   Accepted: 3717 ...

  4. 一起开心2020暑假训练第二周 图论(模板题)

    比赛链接: 文章目录 A HDU 1285 一 B HDU 1863 起 C POJ 2387 开 D POJ 1502 心 E HDU 5922 图 F HDU 2112 论 A HDU 1285 ...

  5. kuangbin 最小生成树专题 - ZOJ - 1586 QS Network (朴素 Prim算法 模板题)

    kuangbin 最小生成树专题 - ZOJ - 1586 QS Network (朴素 Prim算法 模板题) 总题单 week 3 [kuangbin带你飞] 题单 最小生成树 + 线段树 Cli ...

  6. 【HDU - 1102】Constructing Roads (最小生成树裸题模板)

    题干: There are N villages, which are numbered from 1 to N, and you should build some roads such that ...

  7. CSP认证201412-4 最优灌溉[C++题解]:最小生成树裸题、Kruskal算法求最小生成树

    题目分析 来源:acwing 分析:这是一道最小生成树的裸题. 这里默写Kruskal求最小生成树的最小费用的模板. 最小生成树模板请参考笔者的另一篇博文: 最小生成树板子-AcWing 859. K ...

  8. POj 3164 Command Network最小树形图 模板题 朱刘算法

    Command Network After a long lasting war on words, a war on arms finally breaks out between littleke ...

  9. 1488:新的开始(Primt模板题)

    1488:新的开始 时间限制: 1000 ms 内存限制: 65536 KB [题目描述] 发展采矿业当然首先得有矿井,小 FF 花了上次探险获得的千分之一的财富请人在岛上挖了 n 口矿井,但他似乎忘 ...

最新文章

  1. 当文员学计算机二级,二本学生毕业后在干什么?多半做3种工作,过来人深有同感...
  2. java读取欧姆龙plc_欧姆龙CJ2M系列PLC与PLC之间的数据相互读取设定
  3. boost::math::statistics相关用法的测试程序
  4. 【转】spin_lock、spin_lock_irq、spin_lock_irqsave区别
  5. XML和JSON的比较
  6. Power BI Desktop中的分解树
  7. 如何拷贝工程_如何获得微信小游戏跳一跳源码以及源代码组合包括哪些
  8. c语言读grd文件,基于GDAL库,读取.grd文件(以海洋地形数据为例)C++版
  9. 主流移动开发平台架构分析
  10. python自然语言分析--倚天屠龙记人物关系、词云、柱状图、-词频
  11. “武大樱花绽放视频”动手实操教程--Python
  12. java response.write_response.write()区别response.getWrite().write()
  13. 区块链学习笔记(2)难度整定,区块形成,区块体,Merkle树,Merkle Proof默克尔证明
  14. 微信小程序API-设备- 网络状态
  15. 电视剧植入式广告的植入方式有哪些
  16. [Unity][ILRuntime][C#]热更新运行官方示例U3D项目报错
  17. 魔兽地图编辑器插件YDWE的使用与基本设置3之地形面板、装饰物面板、单位面板、区域面板、镜头面板
  18. 深度学习服务器怎么选?哪个更划算?
  19. DNS的正向解析,反向解析以及双向解析
  20. Ubuntu18.04设置连接网络,使虚拟机下的Ubuntu18.04可以上网

热门文章

  1. photoshop如何制作gif动画案例教程
  2. 计算机 游戏 排名2015年,游戏笔记本电脑排名2015年
  3. 用批处理文件在注册表中添加开机启动项
  4. 什么是Alpha,Beta,RC,RTM,OEM版
  5. 您会给这篇高考最牛作文多少分?
  6. 传感技术复习笔记(4)——变磁阻式传感器
  7. Linux 下的串口编程(一)
  8. 小米11pro什么时候发布 小米11pro参数配置
  9. 80后幽默语录100条
  10. java弱智代码_JAVA 弱智ATM