题目链接:###

传送门

题意:###

给定一颗N个节点的树,定义两点距离为他们之间路径中边权最小值。

Q次询问K,V,询问到V距离>=K的点有多少(不含V)

呃呃呃呃考试的时候直奔了T3,结果公式推挂了(。。)最后5min回来搞T1,看出了正解然而手速跟不上……

分析:###

把所有的询问先离线下来存在一个结构体里并记录顺序(以便输出),然后分别把边和询问按w和k从大到小排序

用一个循环扫询问,每次询问把大于等于ask[i].k的边加进并查集并更新总和,最后按顺序排回来输出

具体的操作都在代码里

代码:###

#include<bits/stdc++.h>
#define N (200000+5)
using namespace std;
inline int read(){
int cnt=0,f=1;char c;
c=getchar();
while(!isdigit(c)){
if(c=='-')f=-f;
c=getchar();
}
while(isdigit(c)){
cnt=cnt*10+c-'0';
c=getchar();
}
return cnt*f;
}
int n,q,id[N],p=1,fa[N];
struct node{int x;int y;int w;} edge[N];
struct node2{int num;int v;int k;int res;} ask[N];
bool cmp(node a,node b){
return a.w>b.w;
}
bool cmp2(node2 a,node2 b){
return a.k>b.k;
} bool cmp3(node2 a,node2 b){
return a.num<b.num;
} int get_father(int x){
if(fa[x]==x)return x;
return fa[x]=get_father(fa[x]);
} void merge(int a,int b){
int x=get_father(a);
int y=get_father(b);
if(x==y) return;
else fa[x]=y;
id[y]+=id[x];
} int main(){
n=read();q=read();
for(register int i=1;i<=n;i++) fa[i]=i,id[i]=1; for(register int i=1;i<n;i++) {
edge[i].x=read();
edge[i].y=read();
edge[i].w=read();
} for(register int i=1;i<=q;i++) {
ask[i].k=read();
ask[i].v=read();
ask[i].num=i;
} sort(edge+1,edge+n,cmp);
sort(ask+1,ask+q+1,cmp2); for(register int i=1;i<=q;i++){
while(edge[p].w>=ask[i].k&&p<n){
merge(edge[p].x,edge[p].y);
p++;
}
int t=get_father(ask[i].v);
ask[i].res=id[t]-1;
} sort(ask+1,ask+q+1,cmp3); for(register int i=1;i<=q;i++) printf("%d\n",ask[i].res);
return 0;
}

最新文章

  1. ss命令和Recv-Q和Send-Q状态
  2. 用Navicat Premium 远程连接oracle数据库
  3. 原生js与css3结合的电风扇
  4. 图的存储,搜索,遍历,广度优先算法和深度优先算法,最小生成树-Java实现
  5. 【wikioi】1029 遍历问题
  6. oracle ORA-12519,TNS:no appropriate service handler found的
  7. HDU 4612 Warm up(2013多校2 1002 双连通分量)
  8. iOS开发——数据持久化Swift篇&amp;(三)SQLite3
  9. (二)Hibernate4 CRUD 体验
  10. Linux命令:cat命令详解
  11. IE兼容HTML5
  12. 使用dbstart 和dbshut 脚本来自动化启动和关闭数据库
  13. Hibernate 配置详解(12) 补充
  14. java读写文件
  15. UVa 740 - Baudot Data Communication Code
  16. dedecms 自定义标签的方法
  17. 操作系统-实验一、DOS使用命令实验
  18. Ubuntu Docker 版本的更新与安装
  19. Java 核心内容相关面试题【1】
  20. Xamarin Essentials教程磁力计Magnetometer

热门文章

  1. Apache Qpid Broker云
  2. dsp端编译异常之max和min未定义
  3. hibernate 的POJO状态
  4. [a,s]=[22,3]
  5. SDUT OJ 1598 周游列国
  6. MYSQL进阶学习笔记六:MySQL视图的创建,理解及管理!(视频序号:进阶_14,15)
  7. 基于C#实现Windows服务状态启动和停止服务的方法
  8. codeforces 673D D. Bear and Two Paths(构造)
  9. Objective-C基础知识
  10. 使用pngcrush压缩png图片