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 ...
随机推荐
- poj2388---求奇数个数字的最中间的数
#include <stdio.h> #include <stdlib.h> int cmp(const void *a,const void *b) { return (*( ...
- [LeetCode][Python]ZigZag Conversion
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com'https://oj.leetcode.com/problems/zigzag- ...
- Windows7中搭建Android x86_64及armv8-a操作步骤
1. 从https://developer.android.com/tools/sdk/ndk/index.html 下载android-ndk-r10d-windows-x86_64. ...
- JavaScript对css样式表操作
CSS样式表3种方式: 内嵌:写在html标签中的样式 :如:<p style="width:100px"> 内嵌</p> 内联:写在html 中<h ...
- 2014.9.20CSS样式表
一.前景与背景 background-color: 背景色,定义背景的颜色 background-image:url() 定义背景图片 background-attachment:fixed/scro ...
- Httpservlet cannot be resolved to a type
这个问题与上个问题可以说是“错的类似”.解决方案:就是在Tomcat的lib目录下加入servlet-api.jar 即可.
- Csharp多态的实现(接口)
1.什么是接口 接口可以看做是一个标准, 所有继承的子类需要按照接口中声明的方法来 接口用关键字 interface 修饰,接口的名字一般是I.........able ,表示我有什么能力 接口一般是 ...
- gdb 命令使用
1.gdb -x command.txt 每次重复输入命令很麻烦,可以使用上面的命令,把命令输入进command.txt里面,然后直接就可以执行gdb. 2.list 2.1 list functio ...
- Linux下Apache重启遇到No space left on device错误的解决方法
解决办法:1.输入:ipcs -s 看有没有超过5个,如果有请执行下面2的命令:2.ipcs -s | perl -ane '/^0x00000000/ && `ipcrm -s ...
- K-means算法[聚类算法]
聚类算法k-Means的实现 <?php /* *Kmeans法(聚类算法的实现) */ /* *求误差平方和J */ //----------------------------------- ...