51nod 1640 天气晴朗的魔法
这样阴沉的天气持续下去,我们不免担心起他的健康。
两个正整数N,M。(1 <= N <= 10^5, N <= M <= 2 * 10^5) 接下来M行,每一行有三个整数A, B, V。(1 <= A, B <= N, INT_MIN <= V <= INT_MAX) 保证输入数据合法。
输出一个正整数R,表示符合条件的魔法阵的魔力值之和。
4 6
1 2 3
1 3 1
1 4 7
2 3 4
2 4 5
3 4 6
12
#include <algorithm>
#include <cstring>
#include <cctype>
#include <cstdio>
#define N 100005
typedef long long LL;
inline void Read(LL &x)
{
bool f=;register char ch=getchar();
for(x=;!isdigit(ch);ch=getchar()) if(ch=='-') f=;
for(;isdigit(ch);x=x*+ch-'',ch=getchar());
x=f?-x:x;
}
using namespace std;
struct node
{
LL x,y,z;
bool operator<(node a)const
{
return z<a.z;
}
}edge[N<<];
LL fa[N],n,m;
LL ans=-0x7fffffff,l,r;
LL find_(LL x) {return fa[x]==x?x:fa[x]=find_(fa[x]);}
LL max(LL a,LL b) {return a>b?a:b;}
LL min(LL a,LL b) {return a>b?b:a;}
bool check(LL x)
{
for(LL i=;i<=n;++i) fa[i]=i;
LL now=,num=;
for(LL i=m;i>=;--i)
{
int fx=find_(edge[i].x),fy=find_(edge[i].y);
if(fx!=fy&&edge[i].z<=x)
{
fa[fy]=fx;
now+=edge[i].z;
num++;
if(num==n-) break;
}
}
if(num==n-) {ans=now;return true;}
return false;
}
int main()
{
Read(n);Read(m);
for(int i=;i<=m;++i) Read(edge[i].x),Read(edge[i].y),Read(edge[i].z);
l=-0x7fffffff,r=0x7fffffff;
sort(edge+,edge++m);
for(LL mid;l<=r;)
{
mid=(l+r)>>;
if(check(mid)) r=mid-;
else l=mid+;
}
printf("%lld\n",ans);
return ;
}
51nod 1640 天气晴朗的魔法的更多相关文章
- 51Nod - 1640 天气晴朗的魔法 大+小生成树(最大值最小)/二分
天气晴朗的魔法 这样阴沉的天气持续下去,我们不免担心起他的健康. 51nod魔法学校近日开展了主题为“天气晴朗”的魔法交流活动. N名魔法师按阵法站好,之后选取N - 1条魔法链将所有魔法师的 ...
- 51nod 1640 天气晴朗的魔法 二分 + 克鲁斯卡算法(kruskal算法) 做复杂了
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1640 一开始想的时候,看到要使得最大值最小,那这样肯定是二分这个最大值了 ...
- 51nod 1640 天气晴朗的魔法 最小生成树
题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1640 题解: 先求最小生成树,记录最大边. 然后求最大生成树 ...
- 51nod——1640 天气晴朗的魔法 有边权限制的最大生成树
好好读题嗷:“所以我们要求阵中的魔法链的魔力值最大值尽可能的小,与此同时,魔力值之和要尽可能的大.” 第一条件是生成树的最大边权更小,第二条件是在最大边权的限制下搞一个最大生成树. 至于最大生成树,如 ...
- 51 Nod 1640 天气晴朗的魔法( Kruskall )
#include <bits/stdc++.h> typedef long long LL; using namespace std; ; struct node{ LL u,v,w; n ...
- 51nod 天气晴朗的魔法 - (Kruskall最小生成树)
题目: 基准时间限制:1 秒 空间限制:131072 KB 51nod魔法学校近日开展了主题为“天气晴朗”的魔法交流活动. N名魔法师按阵法站好,之后选取N - 1条魔法链将所有魔法师的魔力连接 ...
- 51nod 1640 MST+二分
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1640 1640 天气晴朗的魔法 题目来源: 原创 基准时间限制:1 秒 ...
- 51nod-1640--天气晴朗的魔法(简单最小生成树)
1640 天气晴朗的魔法 题目来源: 原创 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 这样阴沉的天气持续下去,我们不免担心起他的健康. 51nod魔法学校近日 ...
- HUAS 2017暑假第六周比赛-题解
A.Parenthesis 括号匹配的问题有一种经典的做法. 将左括号看成1,右括号看成-1,做一遍前缀和sum. 括号序列是合法的当且仅当\(sum[n]=Min(sum[1],sum[2].... ...
随机推荐
- wpf Datagrid 的全选
在我的一个datagrid的一列中需要全选框,所以我在样式中是这样写的: <DataGridTemplateColumn.Header> <CheckBox> <i:In ...
- windows64位如何安装pyspider并运行
1.下载whl文件: http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 2.安装该文件 3.可能碰到问题,pip的版本低了,需要更新一下pip的版本.更新 ...
- [翻译]Nativescript 中 Web 视图与 Android/IOS 的双向通信
English document From http://shripalsoni.com/blog/nativescript-webview-native-bi-directional-communi ...
- C# 写 LeetCode easy #7 Reverse Integer
7.Reverse Integer Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 ...
- CSS 定位 (Positioning)概述
div.h1 或 p 元素常常被称为块级元素. 这意味着这些元素显示为一块内容,即“块框”. 与之相反,span 和 strong 等元素称为“行内元素”,这是因为它们的内容显示在行中,即“行内框”. ...
- php curl采集,服务器gzip压缩返回数据怎么办
一般服务器不会胡乱返回gzip压缩的数据,一般是客户端请求的头部里包含你浏览器能接受的压缩方式, Accept-Encoding:gzip,deflate,sdch 这里是gzip .deflat ...
- 剑指Offer的学习笔记(C#篇)-- 二叉搜索树的后序遍历序列
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 一 . 解题思想与二叉搜索树概念 (1). 二叉树 ...
- python 合并两个文件并将合并内容保存在另一个文件中
简单地文件合并方法 思路如下: 分别读取两个文件中的内容,并将其保存在一个列表中,将列表通过join()函数转为字符,并将新字符保存在新的文件中. 其中,test1.txt中的内容为: test2.t ...
- SpringMVC之WebMVC介绍
一.MVC是什么 二.常用的MVC框架 三.MVC模式的优缺点 四.SpringMVC简介
- Centos 自动更新git
首先,要先配置好自己的Git,然后在某一处进行脚本的编写. 比如项目目录为:/home/project,那参考如下来进行 vim /home/project/automatic_git.sh #/bi ...