[洛谷P4185] [USACO18JAN]MooTube
2024-10-21 12:00:47
题目链接:###
题意:###
给定一颗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;
}
最新文章
- ss命令和Recv-Q和Send-Q状态
- 用Navicat Premium 远程连接oracle数据库
- 原生js与css3结合的电风扇
- 图的存储,搜索,遍历,广度优先算法和深度优先算法,最小生成树-Java实现
- 【wikioi】1029 遍历问题
- oracle ORA-12519,TNS:no appropriate service handler found的
- HDU 4612 Warm up(2013多校2 1002 双连通分量)
- iOS开发——数据持久化Swift篇&;(三)SQLite3
- (二)Hibernate4 CRUD 体验
- Linux命令:cat命令详解
- IE兼容HTML5
- 使用dbstart 和dbshut 脚本来自动化启动和关闭数据库
- Hibernate 配置详解(12) 补充
- java读写文件
- UVa 740 - Baudot Data Communication Code
- dedecms 自定义标签的方法
- 操作系统-实验一、DOS使用命令实验
- Ubuntu Docker 版本的更新与安装
- Java 核心内容相关面试题【1】
- Xamarin Essentials教程磁力计Magnetometer
热门文章
- Apache Qpid Broker云
- dsp端编译异常之max和min未定义
- hibernate 的POJO状态
- [a,s]=[22,3]
- SDUT OJ 1598 周游列国
- MYSQL进阶学习笔记六:MySQL视图的创建,理解及管理!(视频序号:进阶_14,15)
- 基于C#实现Windows服务状态启动和停止服务的方法
- codeforces 673D D. Bear and Two Paths(构造)
- Objective-C基础知识
- 使用pngcrush压缩png图片