题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5441

题意:是有n个城市,m条边包含u v w;代表u到v的时间是w;

给q的时间x,求在x时间内Jack可以到达多少对城市;其中ab和ba是不同的;

1
5 5 3
2 3 6334
1 5 15724
3 5 5705
4 3 12382
1 3 21726
6000///////可以到达35和53;
10000//////2 5 3是可以相互到达的所以有6种;
13000///////2 3 5 4是想通的有12种;

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
#define N 100100 int f[], r[], Ans[]; struct node
{
int u, v, w, index;
}a[N], b[]; int cmp(node p, node q)
{
return p.w < q.w;
} int Find(int x)
{
if(x!=f[x])
f[x] = Find(f[x]);
return f[x];
} int main()
{
int T, n, m, q; scanf("%d", &T);
while(T--)
{
scanf("%d%d%d", &n, &m, &q); for(int i=; i<=n;i++)
{
f[i] = i;
r[i] = ;
} for(int i=; i<m; i++)
scanf("%d%d%d", &a[i].u, &a[i].v, &a[i].w); for(int i=; i<q; i++)
{
scanf("%d", &b[i].w);
b[i].index = i;
} sort(a, a+m, cmp);
sort(b, b+q, cmp); int j=;
int ans = ;
for(int i=; i<q; i++)
{
while(j<m && b[i].w>=a[j].w)///满足条件的
{
int pa = Find(a[j].u);
int pb = Find(a[j].v);
if(pa != pb)
{
f[pa] = pb;
ans += r[pa]*r[pb];///加上两个集合的数任意组合;
r[pb]+=r[pa];///r[i]代表i的根节点所包含的元素个数;
}
j++;
}
Ans[b[i].index] = ans*;///保存结果,ab和ba是不一样的;
}
for(int i=; i<q; i++)
printf("%d\n", Ans[i]);
}
return ;
}

Travel---hdu5441(并查集)的更多相关文章

  1. HDU5441 Travel 离线并查集

    Travel Problem Description Jack likes to travel around the world, but he doesn’t like to wait. Now, ...

  2. 【BZOJ-1576】安全路径Travel Dijkstra + 并查集

    1576: [Usaco2009 Jan]安全路经Travel Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1044  Solved: 363[Sub ...

  3. HDU 5441——Travel——————【并查集+二分查界限】

    Travel Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Su ...

  4. HDU 5441 Travel (并查集+数学+计数)

    题意:给你一个带权的无向图,然后q(q≤5000)次询问,问有多少对城市(城市对(u,v)与(v,u)算不同的城市对,而且u≠v)之间的边的长度不超过d(如果城市u到城市v途经城市w, 那么需要城市u ...

  5. HDU 5441 Travel(并查集+统计节点个数)

    http://acm.hdu.edu.cn/showproblem.php?pid=5441 题意:给出一个图,每条边有一个距离,现在有多个询问,每个询问有一个距离值d,对于每一个询问,计算出有多少点 ...

  6. HDU5441 Travel (离线操作+并查集)

    Travel Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Su ...

  7. hdu5441 并查集+克鲁斯卡尔算法

    这题计算 一张图上 能走的 点对有多少个  对于每个限制边权 , 对每条边排序,对每个查询排序 然后边做克鲁斯卡尔算法 的时候变计算就好了 #include <iostream> #inc ...

  8. hdu5441 并查集 长春网赛

    对于每次询问的大的值,都是从小的值开始的,那就从小到大处理,省去很多时间,并且秩序遍历一遍m; 这题cin容易超时,scanf明显快很多很多.G++又比C++快; //这代码scanf400+,cin ...

  9. hdu 5441 travel 离线+带权并查集

    Time Limit: 1500/1000 MS (Java/Others)  Memory Limit: 131072/131072 K (Java/Others) Problem Descript ...

  10. hdu 5441 Travel 离线带权并查集

    Travel Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5441 De ...

随机推荐

  1. FreeRTOS 临界段和开关中断

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 临界段代码的临界段也称为临界区,一旦这部分代码开始执行,则不允许任何中断打断.为确保临界段代码的执行不被中断 ...

  2. 单调栈poj2796

    题意:给你一段区间,需要你求出(在这段区间之类的最小值*这段区间所有元素之和)的最大值...... 例如: 6 3 1 6 4 5 2 以4为最小值,向左右延伸,6 4 5  值为60....... ...

  3. qt中的菜单QMenu QAction

    Qt中要建立菜单,有三个类很重要: QMenuBar(QWidget * parent = 0) QMenu(QWidget * parent = 0) QMenu(const QString &am ...

  4. jvm 调整tomcat的堆内存和常驻内存catalina.sh

    4.2 性能优化 tomcat性能取决于你的内存大小 上策:优化代码 中策:jvm优化机制  垃圾回收机制 把不需要的内存回收   优化jvm--优化垃圾回收策略 优化catalina.sh配置文件. ...

  5. 让浏览器下载文件http头部

    网站提供下载服务时经常需要实现一个强制下载功能(即强制弹出下载对话框),并且文件名保持和用户之前上传时相同. 效果如下图:  Content-Disposition 使用 HTTP Header 的 ...

  6. 容斥 - HDU 4135 Co-prime

    Co-prime Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=4135 推荐: 容斥原理 Mean: 给你一个区间[l,r]和一 ...

  7. OGNL支持各种纷繁复杂的表达式

    OGNL支持各种纷繁复杂的表达式.但是最最基本的表达式的原型,是将对象的引用值用点串联起来,从左到右,每一次表达式计算返回的结果成为当前对象,后面部分接着在当前对象上进行计算,一直到全部表达式计算完成 ...

  8. 浅谈Unity中的GC以及优化

    介绍: 在游戏运行的时候,数据主要存储在内存中,当游戏的数据不在需要的时候,存储当前数据的内存就可以被回收再次使用.内存垃圾是指当前废弃数据所占用的内存,垃圾回收(GC)是指将废弃的内存重新回收再次使 ...

  9. bootstrap基础学习八篇

    bootstrap辅助类 a.对于文本颜色 以下不同的类展示了不同的文本颜色.如果文本是个链接鼠标移动到文本上会变暗: 类 描述 .text-muted "text-muted" ...

  10. WTL:下载、安装、初见

    简介 WTL: Windows Template Library 基于ATL对Win32 API的封装 C++库,用于开发Windows应用程序和UI组件 WTL功能不如MFC完善,但比MFC更小巧更 ...