「BZOJ 5188」「Usaco2018 Jan」MooTube
题目链接
\(Describe\)
有一个\(n\)个节点的树,边有权值,定义两个节点之间的距离为两点之间的路径上的最小边权
给你\(Q\)个询问,问你与点\(v\)的距离大于等于\(k\)的点有多少个
\(Solution\)
这道题主要用并查集搞一下就好了啊.
离线的做.
- 首先将边按照权值排序,将询问的按照k排序
- 然后把权值大于等于\(k\)的放入并查集中,维护一个\(siz\)即节点的个数.
\(End\)
\(Code\)
#include<bits/stdc++.h>
#define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)
#define rg register
using namespace std;
typedef long long ll;
int read(){
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9') f=(c=='-')?-1:1,c=getchar();
while(c>='0'&&c<='9') x=x*10+c-48,c=getchar();
return f*x;
}
struct node{
int x,y,v;
}a[100010],b[100010];
int q[100010],pre[100010],siz[100010];
bool cmp(const node & a , const node & b){
return a.v>b.v;
}
int find(int x){
return pre[x]==x?x:pre[x]=find(pre[x]);
}
void join(int x,int y){
int fx=find(x),fy=find(y);
if(fx!=fy)
pre[fx]=fy,siz[fy]+=siz[fx];
}
int main(){
int n=read(),m=read(),cnt=1;
for(int i=1;i<n;i++)
a[i].x=read(),a[i].y=read(),a[i].v=read(),pre[i]=i,siz[i]=1;
sort(a+1,a+n,cmp),pre[n]=n,siz[n]=1;
for(int i=1;i<=m;i++)
b[i].v=read(),b[i].x=read(),b[i].y=i;
sort(b+1,b+1+m,cmp);
for(int i=1;i<=m;i++){
while(a[cnt].v>=b[i].v)
join(a[cnt].x,a[cnt].y),cnt++;
q[b[i].y]=siz[find(b[i].x)]-1;
}
for(int i=1;i<=m;i++)
printf("%d\n",q[i]);
}
「BZOJ 5188」「Usaco2018 Jan」MooTube的更多相关文章
- 「BZOJ 4228」Tibbar的后花园
「BZOJ 4228」Tibbar的后花园 Please contact lydsy2012@163.com! 警告 解题思路 可以证明最终的图中所有点的度数都 \(< 3\) ,且不存在环长是 ...
- 「BZOJ 3645」小朋友与二叉树
「BZOJ 3645」小朋友与二叉树 解题思路 令 \(G(x)\) 为关于可选大小集合的生成函数,即 \[ G(x)=\sum[i\in c ] x^i \] 令 \(F(x)\) 第 \(n\) ...
- 「BZOJ 4502」串
「BZOJ 4502」串 题目描述 兔子们在玩字符串的游戏.首先,它们拿出了一个字符串集合 \(S\),然后它们定义一个字符串为"好"的,当且仅当它可以被分成非空的两段,其中每一段 ...
- 「BZOJ 4289」 PA2012 Tax
「BZOJ 4289」 PA2012 Tax 题目描述 给出一个 \(N\) 个点 \(M\) 条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点 \(1\) 到点 \( ...
- 「BZOJ 2534」 L - gap字符串
「BZOJ 2534」 L - gap字符串 题目描述 有一种形如 \(uv u\) 形式的字符串,其中 \(u\) 是非空字符串,且 \(v\) 的长度正好为 \(L\), 那么称这个字符串为 \( ...
- 「BZOJ 2956」模积和
「BZOJ 2956」模积和 令 \(l=\min(n,m)\).这个 \(i\neq j\) 非常不优雅,所以我们考虑分开计算,即: \[\begin{aligned} &\sum_{i=1 ...
- 【翻译】西川善司的「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,后篇
http://www.4gamer.net/games/216/G021678/20140714079/ 连载第2回的本回, Arc System Works开发的格斗游戏「GUILTY G ...
- Android内存管理(4)*官方教程 含「高效内存的16条策略」 Managing Your App's Memory
Managing Your App's Memory In this document How Android Manages Memory Sharing Memory Allocating and ...
- SSH连接时出现「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」解决办法
用ssh來操控github,沒想到連線時,出現「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」,後面還有一大串英文,這時當然要向Google大神求助 ...
随机推荐
- Ajax 请求session过期的统一处理
public class LoginInterceptor extends HandlerInterceptorAdapter { @SuppressWarnings("unused&quo ...
- 1112 Stucked Keyboard
题意:坏掉的键若被按下,总是重复打出k次.比如,k为3,打出的序列如下—— thiiis iiisss a teeeeeest 坏掉的键是i和e,虽然iiisss中s也出现了3次,但它不是坏掉的键,因 ...
- Elasticsearch5.6安装
Elasticsearch5.6安装 1.下载 5.6.8 sudo curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/e ...
- Py修行路 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)
一.日志模块 两种配置方式:1.config函数 2.logger #1.config函数 不能输出到屏幕 #2.logger对象 (获取别人的信息,需要两个数据流:文件流和屏幕流需要将数据从两个数据 ...
- spring mvc学习 总体概览
spring mvc 设计概览 springmvc处理http请求,主要是在web.xml中配置一个dispatcherservlet,然后由此进行拦截并处理请求返回相应,下面就针对源码大体记 ...
- dubbo学习 一 dubbo概述
1,背景 1,网站刚开时候的时候可能所有的功能业务都在一个应用里面 2,当业务不断复杂,流量不断增多的时候,就需要将原先的一个应用划分成多个独立的应用. 3,当分出来的业务越来越多的时候,应用 ...
- Java面向对象作业-用接口方式测试向下转型
Java面向对象作业-用接口方式测试向下转型 根据视频的里实例 我们直接修改Test2测试方法: package com.java1234.chap03.sec13; public class Tes ...
- GO语言文件的创建与打开实例分析
本文实例分析了GO语言文件的创建与打开用法.分享给大家供大家参考.具体分析如下: 文件操作是个很重要的话题,使用也非常频繁,熟悉如何操作文件是必不可少的.Golang 对文件的支持是在 os pack ...
- FP服务无法启动,端口被占用
一.错误如下: Starting CISAgent..Exception in thread "main" com.i2.cis.util.SystemConfigurationE ...
- Windows:condition_variable 两个例子
题目:子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码.注意:一定是子线程先执行,主线程再执行. #in ...