The Experience of Love

 Accepts: 11
 Submissions: 108
 Time Limit: 4000/2000 MS (Java/Others)
 Memory Limit: 65536/65536 K (Java/Others)
问题描述
一个叫Gorwin的女孩和一个叫Vivin的男孩是一对情侣。他们来到一个叫爱情的国家,这个国家由NN个城市组成而且只有N-1N−1条小道(像一棵树),每条小道有一个值表示两个城市间的距离。他们选择两个城市住下,Gorwin在一个城市Vivin在另外一个,第一次约会,Gorwin去找Vivin,她会写下路径上最长的一条小道(maxValue),第二次约会,Vivin去找Gorwin,他会写下路径上最短的一条小道(minValue),然后计算maxValue减去minValue的结果作为爱情经验值,再然后重新选择两个城市居住而且计算新的爱情经验值,重复一次又一次。

当他们选择过所有的情况后,请帮助他们计算一下爱情经验值的总和。
输入描述
大约有55组数据在输入文件。
对于每一组测试数据,第一行一个数NN,然后N-1N−1行,每行三个数aa, bb和cc,表示一条小道连接城市aa和城市bb,距离为cc. [参数说明]
1 < N <= 150000,1 <= a, b <= n,1 <= c <= {10}^{9}1<N<=150000,1<=a,b<=n,1<=c<=10​9​​
输出描述
每组测试数据输出一行,输出格式为 Case #x: answer, x表示数据编号,answer表示爱情经验值的总和。
输入样例
3
1 2 1
2 3 2
5
1 2 2
2 3 5
2 4 7
3 5 4
输出样例
Case #1: 1
Case #2: 17
Hint
请注意输入文件较大。

对于第一个样例:
最大值是1最小值是1,当他们选择城市1和2,爱情经验值是0.
最大值是2最小值是2,当他们选择城市2和3,爱情经验值是0.
最大值是2最小值是1,当他们选择城市1和3,爱情经验值是1.
所以爱情经验值的总和就是1。 对于边i,与u相连的点有m个,与v相连的边有n个,如果按权值从小到大排,那么每次都能求得从m个中的一个节点到n个中的一个节点路径的最大值,就是wi,因为之前所处理的所有边权值
都小于wi。反之求最小值也一样。
#include <iostream>
#include <algorithm>
#include <cstdio>
#define LL unsigned long long
using namespace std;
const int Max=+;
int f[Max],num[Max];
struct edge
{
int u,v,w;
}e[Max];
bool cmp1(edge a,edge b)
{
return a.w<b.w;
}
bool cmp2(edge a,edge b)
{
return a.w>b.w;
}
int find(int x)
{
return f[x]==-?x:f[x]=find(f[x]);
}
int main()
{
int n,ca=;
while(~scanf("%d",&n))
{
for(int i=;i<n;i++)
{
scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);
}
for(int i=;i<=n;i++) f[i]=-,num[i]=;
sort(e+,e+n,cmp1);
LL maxsum=,t=;
for(int i=;i<n;i++)
{
int pa=find(e[i].u);
int pb=find(e[i].v);
if(pa!=pb)
{
f[pa]=pb; //设pb为pa的父节点
maxsum+=t*num[pa]*num[pb]*e[i].w;
num[pb]+=num[pa]; //那么pa对到pb的节点个数和有所增益
}
}
sort(e+,e+n,cmp2);
LL minsum=;
for(int i=;i<=n;i++) f[i]=-,num[i]=;
for(int i=;i<n;i++)
{
int pa=find(e[i].u);
int pb=find(e[i].v);
if(pa!=pb)
{
f[pa]=pb;
minsum+=t*num[pa]*num[pb]*e[i].w;
num[pb]+=num[pa];
}
}
printf("Case #%d: %I64u\n",ca++,maxsum-minsum);
}
return ;
}

hdu 5176 The Experience of Love的更多相关文章

  1. Valentine's Day Round hdu 5176 The Experience of Love [好题 带权并查集 unsigned long long]

    传送门 The Experience of Love Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Ja ...

  2. HDU 5176 The Experience of Love 带权并查集

    The Experience of Love Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/O ...

  3. hdu 5176(并查集)

    The Experience of Love Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/O ...

  4. HDU 5176

    这道题以前好像在哪遇到过. 注意树的每一条边都是桥,所以,桥两端的点要到达对方是必须通过这条边的.于是,可以把边由小到大排序,利用并查集,这样,每加一条边就连通了一部分,而随着权值的增大,必定是桥两端 ...

  5. hdu 1086(计算几何入门题——计算线段交点个数)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1086 You can Solve a Geometry Problem too Time Limit: 2 ...

  6. hdu 5326 Work

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5326 Work Description It’s an interesting experience ...

  7. hdu 3642 Get The Treasury

    Get The Treasury http://acm.hdu.edu.cn/showproblem.php?pid=3642 Time Limit: 10000/5000 MS (Java/Othe ...

  8. hdu 3954 线段树 (标记)

    Level up Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. HDU 1808 Halloween treats(抽屉原理)

    题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=1808 Problem Description Every year there is the same ...

随机推荐

  1. Codeforces Round #273 (Div. 2)D. Red-Green Towers DP

    D. Red-Green Towers   There are r red and g green blocks for construction of the red-green tower. Re ...

  2. 【Unity】用Shader编程实现3D红心

    有些形状,即使没有3D美术设计师提供模型,也能够用代码生成. 对于想保持原创性不想借用他人模型的独立开发人员来说,这无非是一个非常重要的途径. 今天献给大家的是用Shader编程实现的一颗红心,寄托下 ...

  3. CF949 C Data Center Maintenance——边双连通分量

    题目:http://codeforces.com/contest/949/problem/C 把一个点指向修改它会影响到的点就可以做了: 有取模,所以多出一些要注意的地方,首先是可能出现环,所以需要 ...

  4. MSP430 使用时 RST引脚一定拉高

    因为这次省去了RESET按键,RST没做任何处理,程序下载完之后插上电池无法运行,最终原因:RST引脚没有拉高.呼呼切记啊

  5. eclipse.ini启动参数配置的解析及方法

    原文地址 - http://www.uzzf.com/news/18444.html 1.先了解下JVM内存管理机制,JVM内存分为堆内存和非堆内存 2.JVM内存限制 首先JVM内存限制于实际的最大 ...

  6. E20170924-hm

    literal   adj. 照字面的; 原义的; 逐字的; 平实的,避免夸张;   n. [印] 错排,文字上的错误; parameter   n. [数] 参数; <物><数&g ...

  7. 织梦dedecms标签大全总结

    织梦dedecms标签大全总结,同时还建议多参考dede默认模板,织梦默认模板上的标签还是很有参考价值的. dedecms系统参数全局标签,在后台系统设置里可以看到这个参数 网站名称:{dede:gl ...

  8. [App Store Connect帮助]三、管理 App 和版本(6.2)转让 App:App 转让条件

    App 必须满足以下条件才可转让: 转让者和接收者的帐户均不处于待处理或变更状态,且双方均已接受“协议.税务和银行业务”部分中最新版本的转让协议 该 App 的任何版本都不能使用 iCloud 权限 ...

  9. 【知识总结】后缀数组(Suffix_Array)

    又是一个学了n遍还没学会的算法-- 后缀数组是一种常用的处理字符串问题的数据结构,主要由\(sa\)和\(rank\)两个数组组成.以下给出一些定义: \(str\)表示处理的字符串,长度为\(len ...

  10. [转]linux之cut命令的用法

    转自:http://www.jb51.net/article/41872.htm cut是一个选取命令,就是将一段数据经过分析,取出我们想要的.一般来说,选取信息通常是针对“行”来进行分析的,并不是整 ...