题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1640

题意:中文题诶~

思路:kruscal

题目要求是在边权最大值最小的情况下总权值尽量大,注意其中的优先级;

可以先从小到大加边kruscal一遍得到最小的最大边权,再从大到小加边kruscal一遍即可得出答案;

注意第二边kruscal时要先判当前加的边权不大于限制边权再加边,不然构造的并查集是错的;

代码:

 #include <iostream>
#include <algorithm>
#include <stdio.h>
#define ll long long
using namespace std; const int MAXN=2e5+;
const ll inf=0x7f7f7f7f7f; struct node{
int x, y;
ll v;
}edge[MAXN]; int pre[MAXN], n, m; bool cmp(node a, node b){
return a.v < b.v;
} int find(int x){
return pre[x]==x?x:pre[x]=find(pre[x]);
} ll jion(node edge, ll cnt){
if(edge.v>cnt) return ;
int fx=find(edge.x);
int fy=find(edge.y);
if(fx==fy) return ;
pre[fx]=fy;
return edge.v;
} void init(void){
for(int i=; i<=n; i++){
pre[i]=i;
}
} void kruscal(void){
ll cnt=, ans=, cc=inf;
init();
sort(edge, edge+m, cmp);
for(int i=; i<m; i++){
ll gg=jion(edge[i], cc);
cnt=max(cnt, gg);
}
init();
for(int i=m-; i>=; i--){
ans+=jion(edge[i], cnt);
}
printf("%lld\n", ans);
} int main(void){
scanf("%d%d", &n, &m);
for(int i=; i<m; i++){
scanf("%d%d%lld", &edge[i].x, &edge[i].y, &edge[i].v);
}
kruscal();
return ;
}

51nod1640(kruscal)的更多相关文章

  1. hdu1162(最小生成树 prim or kruscal)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 意义:给出一些点,用线问使所有点直接或间接连通,需要多长: 思路:裸最小生成树: 法1: pri ...

  2. HDU1879 kruscal 继续畅通工程

    继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  3. hdu 1102 Constructing Roads Kruscal

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1102 题意:这道题实际上和hdu 1242 Rescue 非常相似,改变了输入方式之后, 本题实际上更 ...

  4. UVA 1151 Buy or Build (MST最小生成树,kruscal,变形)

    题意: 要使n个点之间能够互通,要使两点直接互通需要耗费它们之间的欧几里得距离的平方大小的花费,这说明每两个点都可以使其互通.接着有q个套餐可以选,一旦选了这些套餐,他们所包含的点自动就连起来了,所需 ...

  5. UVA 1395 Slim Span (最小生成树,MST,kruscal)

    题意:给一个图,找一棵生成树,其满足:最大权-最小权=最小.简单图,不一定连通,权值可能全相同. 思路:点数量不大.根据kruscal每次挑选的是最小权值的边,那么苗条度一定也是最小.但是生成树有多棵 ...

  6. 【UVA 10307 Killing Aliens in Borg Maze】最小生成树, kruscal, bfs

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=20846 POJ 3026是同样的题,但是内存要求比较严格,并是没有 ...

  7. 【HDU 4463 Outlets】最小生成树(prim,kruscal都可)

    以(x,y)坐标的形式给出n个点,修建若干条路使得所有点连通(其中有两个给出的特殊点必须相邻),求所有路的总长度的最小值. 因对所修的路的形状没有限制,所以可看成带权无向完全图,边权值为两点间距离.因 ...

  8. Kruscal 、 Prime Template

    Kruscal  Template : 很裸的Kruscal Template(求最小生成树中最长路,即最短路中最长路) //#pragma comment(linker, "/STACK: ...

  9. HDOJ 1598 Kruscal

    贪心思想的Kruscal:先对边排序,再从第一条边开始,一旦start point 和 end poiont 连上,就break #include <stdio.h> #include & ...

随机推荐

  1. HDU 6076 Security Check DP递推优化

    Security Check Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others) ...

  2. appium(2)-Setting up Appium

    Setting up Appium Running Appium on Windows Additional Setup for Android App Testing Download latest ...

  3. String StringBuffer StringBuilder 三者之间的区别

    今天被公司骗去面试,好糟心...... 这个问题不管去哪里面试,基础问题基本上都会问到这个问题.网上好多大神都总结,这里自己也总结一下. 首先我们最开始学的就是String字符串常量,这里有行代码 S ...

  4. NYOJ-37 回文字符串 —— LCS变形

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=37 题解: 一开始想从两边向中间添加字符,发现这样不是最优的.因为加入字符之后,这些原本存 ...

  5. 通用方法解决UITextFiled输入的时候,键盘遮挡问题

    我们在用键盘录入的时候,有可能会遮挡录入框,所以我们应调整UIView的位置,使其不被遮挡.我写了一个通用的方法可以解决这个问题:​​1. [代码][C/C++]代码         - (void) ...

  6. 2013 gzhu acm

    题目描述: Word Counting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 128000/64000 KB (Java/Other ...

  7. PHP自定义网站根目录

    1.打开httpd.conf配置文件(xampp下apache文件夹中的conf里) Ctrl + F 查找documentroot 找到结果 改好后保存,并重启apache

  8. AC自动机-题目集合

    AC自动机-题目集合 模板 如果你想要学习AC自动机,推荐一些学习资料. 学习可以看这篇博客 http://blog.csdn.net/niushuai666/article/details/7002 ...

  9. [HAOI 2010] 计数

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2425 [算法] 类似与数位动态规划的思想 , 用组合数学进行简单推导即可 时间复杂度 ...

  10. 图片轮播和C3动画

    值得注意的地方是:如果在图片下面的li做背景图片,可以把li上的数字或者文本设置为transparent(透明色),这样的话既可以实现轮播的定时器效果,也可以让li上有C3动画效果.如果li上的文字不 ...