题意:给一个图,若干询问,每次询问只经过边权<=w的边,x能到达的点数

并查集啊,对询问和边排序,直接合并,维护size,查询

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#define N 105000
using namespace std;
int fa[N],size[N],n,m,k;
struct data{
int u,v,w;
}d[4*N];
bool cmpd(data a,data b){return a.w<b.w;}
struct query{
int u,w,ans,id;
}q[N];
bool cmpq(query a,query b){return a.w<b.w;}
bool back(query a,query b){return a.id<b.id;}
int find(int x){
if(fa[x]==x)return x;
fa[x]=find(fa[x]);
return fa[x];
}
void hb(int x,int y){
x=find(x);y=find(y);
if(x==y)return;
fa[y]=x;size[x]+=size[y];
}
int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=n;i++){fa[i]=i;size[i]=1;}
for(int i=1;i<=m;i++)
scanf("%d%d%d",&d[i].u,&d[i].v,&d[i].w);
sort(d+1,d+m+1,cmpd);
for(int i=1;i<=k;i++){
scanf("%d%d",&q[i].u,&q[i].w);
q[i].id=i;
}
sort(q+1,q+k+1,cmpq); q[k+1].w=q[k].w+1;
int now=q[1].w,ee=1,pos=1;
while(now<=q[k].w){
for(;ee<=m&&d[ee].w<=now;ee++)
hb(d[ee].u,d[ee].v);
for(;q[pos].w==now;pos++)
q[pos].ans=size[find(q[pos].u)];
now=q[pos].w;
}
sort(q+1,q+k+1,back);
for(int i=1;i<=k;i++)
printf("%d\n",q[i].ans);
return 0;
}

Travel 并查集的更多相关文章

  1. bzoj 1576: [Usaco2009 Jan]安全路经Travel——并查集+dijkstra

    Description Input * 第一行: 两个空格分开的数, N和M * 第2..M+1行: 三个空格分开的数a_i, b_i,和t_i Output * 第1..N-1行: 第i行包含一个数 ...

  2. hdu 5441 Travel(并查集)

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

  3. HDU5441 Travel 并查集

    http://acm.hdu.edu.cn/showproblem.php?pid=5441 无向图,n个点,m条带权边,q次询问,给出数值d,点a可以到点b当且仅当存在一条路线其中最大的权值不超过d ...

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

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

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

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

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

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

  7. Travel(HDU 5441 2015长春区域赛 带权并查集)

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

  8. 【BZOJ1576】[Usaco2009 Jan]安全路经Travel 最短路+并查集

    [BZOJ1576][Usaco2009 Jan]安全路经Travel Description Input * 第一行: 两个空格分开的数, N和M * 第2..M+1行: 三个空格分开的数a_i, ...

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

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

随机推荐

  1. Loader转换器

    一.简介 webpack本身只能处理js模块,Loader可以理解为模块和资源的转换器,它本身是一个函数,接受文件作为参数,返回转换的结果.因此,我们就能通过require来加载任何类型的模块和文件. ...

  2. 使用Puppeteer抓取受限网站

    不要相信前端是安全的,今天简单验证一下,但是希望大家支持正版,支持原作者,毕竟写书不易. 安装Puppteer npm install --save puppeteer 选择目标网站 我们这里选择胡子 ...

  3. 用js来实现那些数据结构15(图01)

    其实在上一篇介绍树结构的时候,已经有了一些算法的相关内容介入.而在图这种数据结构下,会有更多有关图的算法,比如广度优先搜索,深度优先搜索最短路径算法等等.这是我们要介绍的最后一个数据结构.同时也是本系 ...

  4. 【转载】解决nginx负载均衡的session共享问题

    https://blog.csdn.net/u012081441/article/details/71787164 之前有写过ubuntu环境下搭建nginx环境,今天来谈一下nginx sessio ...

  5. Day10 多线程理论 开启线程

    多线程: 多线程和多进程的不同是他们占用的资源不一样, 一个进程里边可以包含一个或多个进程, 进程的开销大,线程的开销小. 打个比方来说:创建一个进程,就是创建一个车间.创建一个线程,就是在一个车间创 ...

  6. gdb命令中attach使用

    [测试程序] 我们先看看我们的测试程序: /* in eg1.c */ int wib(int no1, int no2) {         int result, diff;         di ...

  7. Sec site list

    Seclist:  英语:  http://seclists.org/  http://www.securityfocus.com/  http://www.exploit-db.com/  http ...

  8. C++单例

    template<class T> class Singleton { public: using object_type = T; struct object_creator { obj ...

  9. 妙用this关键字

    妙用this关键字 ## this关键字一般this关键字都是指的是对象的本身,在类的所有方法.构造器都可以拿到this引用,这是jvm"偷偷"帮我们传递进来的引用,指向调用方法对 ...

  10. sniffer 简介

    http://www.doc88.com/p-095375416629.html 介绍sniffer的工作原理及简单介绍.