HDU OJ 5441 Travel 2015online E
题目:click here
题意:
有个很暴躁的人,想坐车旅行n个城市。连接城市共有m条路(双向)。他坐在车上很不爽,每次最多忍耐x分钟。但是每站下车他又可以休息(重新计时)。总共有q次询问。问途中有多少条路他可以不爆发。a到b 和 b到a 算不同的路。 a 和 b 必须不相同。
分析:
并查集
#include <iostream>
#include <cstdio>
#include <algorithm> using namespace std;
const int M = 2e4+; struct Edge { // 保存结点信息
int from, to, cost;
bool operator < ( const Edge x ) const { return cost < x.cost; }
} es[M*]; struct Query { // 保存问题信息
int val, id;
bool operator < ( const Query x ) const { return val < x.val; };
} que[]; int n, m, q;
int pre[M]; // 并查集
int ans[M]; // 答案
int sum[M]; // 记录并查集树高度 int find( int x ) {
return pre[x] == x ? x : pre[x] = find( pre[x] );
}
void merge( int x, int y ) {
x = find( x ); y = find( y );
if( sum[x] > sum[y] ) { sum[x] += sum[y]; pre[y] = x; }
else { sum[y] += sum[x]; pre[x] = y; }
}
void solve() {
scanf("%d%d%d", &n, &m, &q );
for( int i=; i<m; i++ )
scanf("%d%d%d", &es[i].from, &es[i].to, &es[i].cost );
sort( es, es+m );
for( int i=; i<q; i++ ) {
scanf("%d", &que[i].val );
que[i].id = i;
}
sort( que, que+q );
for( int i=; i<=n; i++ ) { pre[i] = i; sum[i] = ; }
int j = ;
int res = ;
for( int i=; i<q; i++ ) {
for( ; j<m && que[i].val>=es[j].cost; j++ ) {
int x = find( es[j].from );
int y = find( es[j].to );
if( x == y ) continue;
res += sum[x] * sum[y];
merge( es[j].from, es[j].to );
}
ans[que[i].id] = res;
}
for( int i=; i<q; i++ )
printf("%d\n", ans[i]<< );
} int main() {
int t; scanf("%d", &t );
while( t-- ) {
solve();
} return ;
}
HDU OJ 5441 Travel 2015online E的更多相关文章
- [C#] 逆袭——自制日刷千题的AC自动机攻克HDU OJ
前言 做过杭电.浙大或是北大等ACM题库的人一定对“刷题”不陌生,以杭电OJ为例:首先打开首页(http://acm.hdu.edu.cn/),然后登陆,接着找到“Online Exercise”下的 ...
- hdu oj 1285 确定比赛名次
hdu oj 1285 确定比赛名次 题目: 确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- sort(hdu oj 1425)计数排序和快速排序
Description 给你n个整数,请按从大到小的顺序输出其中前m大的数. Input 每组测试数据有两行,第一行有两个数n,m(0 < n,m < 1000000),第二行包含n个各不 ...
- hdu 5441 Travel 离线带权并查集
Travel Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5441 De ...
- HDU 5441 Travel(并查集+统计节点个数)
http://acm.hdu.edu.cn/showproblem.php?pid=5441 题意:给出一个图,每条边有一个距离,现在有多个询问,每个询问有一个距离值d,对于每一个询问,计算出有多少点 ...
- hdu 5441 Travel (2015长春网赛)
http://acm.hdu.edu.cn/showproblem.php?pid=5441 题目大意是给一个n个城市(点)m条路线(边)的双向的路线图,每条路线有时间值(带权图),然后q个询问,每个 ...
- hdu 5441 travel 离线+带权并查集
Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Problem Descript ...
- hdu 5441 Travel(并查集)
Problem Description Jack likes to travel around the world, but he doesn’t like to wait. Now, he is t ...
- HDU 5441——Travel——————【并查集+二分查界限】
Travel Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Su ...
随机推荐
- ViewPager + HorizontalScrollView 实现可滚动的标签栏
这是一个可滑动的标签栏的自定义控件,参考此文章http://blog.csdn.net/fx_sky/article/details/8990573,我将主要的功能整合成一个类,配上2个特定的布局即可 ...
- IOSJSBRIGE商品内容模板
<p> 内容 </p> <script> window.onerror = function(err) { log('window.onerror: ' + err ...
- openNebula libvirt-virsh attach disk device for kvm
1,新建文件硬盘 qemu-img create -f qcow2 testdisk.img 2G
- 部署WSP出现错误—已在此服务器场中安装ID为XXXXX的功能
stsadm -o deploysolution -name ***.wsp -immediate -allowGacDeployment -url http://*** -force
- Java中Lambda表达式的使用
简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能.本人建议不要乱用,因 ...
- JavaSE思维导图(七)
- oracle 使用 decode函数 或 case when 实现行转列
----创建测试表 create table student_score( name varchar2(20), subject varchar2(20), score number(4,1) ); ...
- 读书笔记 - 设计模式(Head First)
设计模式让你和其他开发人员之间有共享的词汇,设计模式可以把你的思考架构的层次提高到模式层面,而不是停留在琐碎的对象上. 设计原则: 封装变化:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需 ...
- CKEditor + CKFinder 实现编辑上传图片配置
下载最新版 ckfinder 本人下载的php版本 https://cksource.com/ckfinder/download 下载最新版ckeditor http://ckeditor.com/ ...
- LineCalc,一个基于Lex&Yacc的简单行计算工具
LineCalc是基于Lex&Yacc的一个简单的行计算工具,支持常见的运算符和部分POSIX中定义于math.h中的数学函数:同时,LineCalc还提供了一个简单的错误处理模块,能检测公式 ...