hdu 4424 Conquer a New Region(并查集,4级)

SAP入门技术分享四:模块化程序 SAP入门技术分享三:模块化程序 阅读详情

E - Conquer a New Region
Time Limit:4000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

Description

The wheel of the history rolling forward, our king conquered a new region in a distant continent.
There are N towns (numbered from 1 to N) in this region connected by several roads. It's confirmed that there is exact one route between any two towns. Traffic is important while controlled colonies are far away from the local country. We define the capacity C(i, j) of a road indicating it is allowed to transport at most C(i, j) goods between town i and town j if there is a road between them. And for a route between i and j, we define a value S(i, j) indicating the maximum traffic capacity between i and j which is equal to the minimum capacity of the roads on the route. 
Our king wants to select a center town to restore his war-resources in which the total traffic capacities from the center to the other N - 1 towns is maximized. Now, you, the best programmer in the kingdom, should help our king to select this center.
 

Input

There are multiple test cases.
The first line of each case contains an integer N. (1 <= N <= 200,000)
The next N - 1 lines each contains three integers a, b, c indicating there is a road between town a and town b whose capacity is c. (1 <= a, b <= N, 1 <= c <= 100,000)
 

Output

For each test case, output an integer indicating the total traffic capacity of the chosen center town.
 

Sample Input

     
4 1 2 2 2 4 1 2 3 1 4 1 2 1 2 4 1 2 3 1
 

Sample Output

     
4 3
 

思路:并查集,把边从大到小排,先放大的边,如果该边连接两个集合,那就判断哪个集合合并比较优,被合并的集合都通过新加边,最小的就是新加边。


#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define clr(f,z) memset(f,z,sizeof(f))
#define LL long long
using namespace std;
const int mm=2e5+9;
int rt[mm],rank[mm];
LL sum[mm];
class Edge
{
  public:int a,b,c;
  bool operator<(const Edge&x)const
  {
    return c>x.c;
  }
}e[mm];
void init(int n)
{
  FOR(i,0,n)rt[i]=i,rank[i]=1,sum[i]=0;
}
int find(int x)
{
  if(x^rt[x])
    rt[x]=find(rt[x]);
  return rt[x];
}
void uni(int a,int b,LL x)
{
  a=find(a);b=find(b);
  LL ta,tb;
  ta=sum[a]+x*rank[b];
  tb=sum[b]+x*rank[a];
  if(ta>tb)
    rt[b]=a,rank[a]+=rank[b],sum[a]+=rank[b]*x;
  else rt[a]=b,rank[b]+=rank[a],sum[b]+=rank[a]*x;
}
int main()
{
  int n,a,b,c;
  while(~scanf("%d",&n))
  { init(n);
    FOR(i,2,n)
    {
      scanf("%d%d%d",&a,&b,&c);
      e[i].a=a;e[i].b=b;e[i].c=c;
    }
    sort(e+2,e+1+n);
    FOR(i,2,n)
    { 
      uni(e[i].a,e[i].b,(LL)e[i].c);
    }
    printf("%I64d\n",sum[find(1)]);
  }
}




Devexpress16.2.6破解工具 Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具 立即下载

相关推荐

逍遥模拟器改真机参数全指南:从ARM伪装到电池传感器模拟

本文提供逍遥模拟器深度伪装实战指南,重点讲解如何通过修改ARM架构、系统属性和模拟传感器数据,使其在硬件信息、电池状态等维度逼近真实设备,有效规避应用检测。文章详细介绍了使用Magisk模块、LSPosed框架进行设备指纹伪装和动态数据模拟的策略,帮助用户实现从静态信息到动态行为的全方位真机模拟。

weixin_29279101的博客 453

SFX-SQLi: A new SQL injection technique for MSSQL (dumps a table in one request!)

 http://www.kachakil.com/papers/SFX-SQLi-en.htm

cnbird's blog 1362

从NHANES到发表:如何用survey包完成符合CDC要求的统计分析(含完整R代码)

本文详细介绍了如何利用R语言的survey包,对美国国家健康与营养调查数据进行符合CDC要求的统计分析。文章重点解析了NHANES数据的复杂抽样设计、权重变量的正确选择与调整,并提供了从数据获取、清洗、构建调查设计对象到执行加权回归及生成发表级表格的完整R代码实战指南,帮助研究者避免常见错误,确保分析结果的准确性与可发表性。

weixin_29054245的博客 521

Struts2's HelloWorld

step 1 :              Go http://struts.apache.org/2.x/, and download the struts-2.2.3.1-all.zip . Then extract the file, you can find th

用文章记录成长 2491

Delphi中使用FireDAC与uniDAC高效连接PostgreSQL的实战指南

本文为Delphi开发者提供了使用FireDAC与uniDAC组件高效连接PostgreSQL数据库的实战指南。文章详细对比了两款组件的选择策略,重点解析了驱动依赖(libpq.dll)的配置、连接参数设置、常见错误排查及性能优化技巧,旨在帮助开发者快速构建稳定可靠的数据库连接。

tomato的博客 806

1. SAP Business Application Studio 里创建一个基于 CAP 模型的最简单的 OData 服务

本文基于 SAP Cloud Application Programming 编程模型的 OData 服务开发教程的第一步,简述了 SAP Business Technology Platform 里 Business Application Studio 开发工具的打开方式,创建 Dev Space 以及 CAP 项目的创建步骤,以及如何通过 schema.cds 和 service.cds 分别创建 OData 模型和 OData 服务,最后通过 ports preview 打开 OData 服务预览页

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1799

【翻译】Abstract Classes Have Constructors

1) In Java , we have default constructors provided for classes by the compiler (in case one is not declared). 2) The abstract classes can't be instantiated by using the new operator because they do...

iteye_19040的博客 467

【Ranger】mac下Apache Ranger编译安装

a、编译过程中出现测试用例不通过和文件认证错误错误:带上参数-DskipTests=true -Drat.skip=true 重新编译;b、若编译过程中出现缺少jar包的情况,可能下载不了,需要手动自动添加;c、编译所需的其他工具如maven等安装配置略。采用这个会报错,因此我才用了下面一个命令。初始化设置Ranger Admin:执行。然后进入target目录。

九师兄 2106

897B Chtholly's request

题意:求解n个回文数的和然后对%m取余。 题解:数学规律,昨晚做的时候我没找出来,一直想构造预处理,写了很多,也不对。今天看了一些博客大佬,有的用规律,有的dfs搜索,当然也有构造预处理的,肯定规律最简单咯。 B. Chtholly's request time limit per test 2 seconds memory limit per test 2

memory_qianxiao的博客 672

基于jeecgboot3.9.0的项目管理——项目工作台(二)

基于jeecgboot3.9.0的项目管理——项目工作台(二)

宁波阿成的博客 206

机器学习特征选择-t检验

在特征选择的过程中通过计算检验统计量值,比较特征之间的统计量的大小,并降序排列,选取统计值较高的特征,从而起到去除差别小的特征(此差别小的特征难以区分不同的额类别)的目的。 以t检验(Student's t test)为例: 假设检验 通过比较两类样本的随机变化,通过计算其p值决定是否拒绝零假设,也即是说:通过计算p值,若p值小于某一阈值则认为两个样本具有显著差异,两个样本是不同的,此时拒绝...

heda3的博客 6700

hdu 4424 Conquer a New Region

贪心+并查集。题目要求所有点到最一点经过的最小边之和最大。则有,对于两个集合A,B,也就是原树两颗子树,加上一条边使他们连通,有两种连接方案:1、使用A集合中的点作为center,则B集合中的点到center必经过新加入的边。1、使用B集合的点作为center,同理。这样的话我们就想到使新加入的边作为当前所有边的最小边,这样的话就容易计算和比较多了,于是问题就迎刃而解了:先加大边,然后并查集求值。

ok_again的专栏 1094

第八届传智杯微信小程序开发挑战赛练习题库

本文是微信小程序开发练习题库,包含单选题、多选题和判断题三种题型。单选题主要考察小程序开发基础知识,如数组方法、组件使用、API调用等;多选题涵盖样式属性、页面跳转、数据处理等综合知识;判断题则测试开发者对小程序特性、生命周期、功能限制等概念的理解。题目内容涉及小程序开发的各个方面,包括组件使用、API调用、数据绑定、页面配置等核心知识点,适合开发者进行自我测试和知识巩固。

qq_73044452的博客 506

Conquer a New Region (并查集)hdu 4424

The wheel of the history rolling forward, our king conquered a new region in a distant continent.  There are N towns (numbered from 1 to N) in this region connected by several roads. It's confirmed th...

jianxingzhang的博客 375

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

hdu 4424 Conquer a New Region (贪心+并查集)

Conquer a New Region Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 647    Accepted Submission(s): 174 Problem Description The whe

To be what you what to be! 1228

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

HDU 4424 Conquer a New Region

分析:这题已知的是一棵树,一开始可能会往树DP那块想,但发现点与点如果用状态转移,复杂度会很高,并且需要求出流量,但仔细一想会知道求任意两点间最小的边,可以用并查集思想来求,这样就能迎刃而解。只要将边从大到小排序即可。 代码如下: #include #include #include #include using namespace std; const int maxn = 205000

永不止步--Roger*Come On 606

hdu 4424 & zoj 3659 Conquer a New Region (并查集 + 贪心)

Conquer a New Region Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 657 Accepted Submission(s): 179 Problem Description The wheel of the

Hadis_yuki 1220

HDU 4424 Conquer a New Region【并查集】【思维题】

Conquer a New Region Time Limit: 8000/4000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2089Accepted Submission(s): 737 Problem Description The w...

aaf76097的博客 161

HDU 4424 Conquer a New Region(分治 并查集)

【题意】 给定N个点,M条边的树。定义d(u,v)为路径u到v的容量,其值为路径上最小的边权。求一个点作为root,使得其他所有点到该点的容量和最小,即sum(d(root,v))最小。求最小值。 【分析】 比赛时想到树形dp,怎么也表示不出状态。 考虑到d(u,v)的值是路径上最小的边权值,那么整个图中边权最小的边一定是一个关键边。选出边权最小的边,可以把树分成两个子树,答案在...

dechi5213的博客 120

HDU - 4424 Conquer a New Region 并查集好题

题意:给定N个点的树。定义d(u,v)为路径u到v的容量,其值为路径上最小的边权。求一个点作为root,使得其他所有点到该点的容量和最小,求最小值。 思路:考虑边权最小的边e,则root一定在其左子树或者右子树上,假设在左子树上,那么e的贡献就是 w[e] * sz[rchild] + ans[lchild],然后将最小边去掉,树就被分成了两部分,每一部分都会有一个最小边,这样分治下去就能求出

WA是一笔财富 378

Conquer a New Region HDU - 4424 (并查集)

题目描述:给定n个点(编号1~n)和n-1条边,每条边的S(i, j)值是顶点i到j的路径上边权值的最小值,求一个中心顶点使其到其他n-1个点的S(i,j)值之和最小、 思路:一开始完全想不到用并查集做,EF给我讲了一会我才弄明白。因为S(i,j)是顶点i到j的路径上边权值的最小值,所以每次要枚举当前最大的边。因为只有没有边的权值比它大时,这条路径的S(i,j)值才会用这条边。对于选出的这条边的

smwqd_yehua_cx的博客 269

HDU - 4424 Conquer a New Region

题目大意:n个点的树,i点到j点的路径最大价值是i到j点的路的权值最小值,以一个点为源点,使得从这个点到其他点的总价值最大 具体思路:贪心 先给边排序,按边权从大到小考虑是从哪个联通块做到哪个联通块 AC代码 #include<bits/stdc++.h> #define int long long using namespace std; int n,...

a380988182的博客 190

hdu 4424 Conquer a New Region(并查集)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=4424 题目大意:给你n个点,n-1条边,每个点有一个最大容量 c,要你找一个中心点,使它到其他 n-1 个点的最大容量的和最大,然后输出这个最大值。 思路:很好的一道题啊!因为对于每条边它有一个容量,一个点到另一个点的最大容量受这条路径里容量最小的那条边的容量的限制,所以这里我们考虑先将边的容量从大到

沉溺的专栏 742

HDU 4424 Conquer a New Region 并查集

题意: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include template inline bool rd(T &ret) { char c; int sgn; if (c = getchar(), c == EOF) return 0

九野的博客 1385

【ICPC-374】hdu 4424 Conquer a New Region

点击打开链接hdu 4424 题意: 有n个点n-1条边,现在规定i-j的路的最大负载量为i到j所经过的所有边的最小值,要求以某个点为中心然后求出这个中心点到所有点的负载量之和最大 思路: 并查集 分析: 1 n个点n-1条边很明显给定的这个关系就是一棵树 2 那么我们利用并查集,先对边按照权值从大到小排序,然后每一次在加入一条边的时候根据选择的中心点是在哪一个集合里面得到的和最大,那么我...

藏经阁 | 玄苦 1372
上一篇: hdu 4427 Math Magic(DP,4级)
下一篇: poj 3208 Apocalypse Someday(数位DP,4级)
剑不飞
博客等级 码龄15年 86粉丝 505原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值