「Ynoi2015」我回来了

这东西已经不是 Ynoi 了,因为太水被嫌弃了。

如何提升自己的数据结构能力?从Ynoi做起

题目链接

其实这个题很小清新的辣,而且不卡常。

由于边权为 \(1\),所以 \(\texttt{BFS}\) 预处理出任意两点间距离。

记录 \(f[i][j]\) 为与点 \(i\) 距离 \(\le j\) 的点的集合。

这里我们可以使用 \(\texttt{bitset}\) 维护。

然后每次将对应的集合并上去即可。

时间复杂度 \(O(\max(n(n+m),\frac{n^3+\sum k}{w}))\)。

贴代码

/*---Author:HenryHuang---*/
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
bitset<maxn> f[maxn][maxn];
vector<int> d[maxn];
int dis[maxn];
int n,m,T;
void bfs(int x){
queue<int> Q;
memset(dis,0,sizeof dis);
Q.push(x);
while(!Q.empty()){
int u=Q.front();Q.pop();
for(auto v:d[u]){
if(!dis[v]&&v!=x){
dis[v]=dis[u]+1;
Q.push(v);
}
}
}
for(int i=1;i<=n;++i)
if(dis[i]!=0||i==x)
f[x][dis[i]].set(i);
for(int i=1;i<=n;++i)
f[x][i]|=f[x][i-1];
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n>>m>>T;
for(int i=1;i<=m;++i){
int a,b;
cin>>a>>b;
d[a].emplace_back(b),d[b].emplace_back(a);
}
for(int i=1;i<=n;++i) bfs(i);
while(T--){
int k;
cin>>k;
bitset<maxn>ans;
// ans.set();
for(int i=1;i<=k;++i){
int x,y;
cin>>x>>y;
ans|=f[x][y];
}
cout<<ans.count()<<'\n';
}
return 0;
}

「Ynoi2015」我回来了的更多相关文章

  1. LOJ #2135. 「ZJOI2015」幻想乡战略游戏(点分树)

    题意 给你一颗 \(n\) 个点的树,每个点的度数不超过 \(20\) ,有 \(q\) 次修改点权的操作. 需要动态维护带权重心,也就是找到一个点 \(v\) 使得 \(\displaystyle ...

  2. 「Python」socket指南

    开始 网络中的 Socket 和 Socket API 是用来跨网络的消息传送的,它提供了 进程间通信(IPC) 的一种形式.网络可以是逻辑的.本地的电脑网络,或者是可以物理连接到外网的网络,并且可以 ...

  3. 「模板」 FHQ_Treap 区间翻转

    「模板」 FHQ_Treap 区间翻转 没有旋转的 Treap 实现区间操作的功能,很好理解,也很好写,只是速度不算太快. 对于要翻转的区间,把整棵 Treap(存有区间 \([1,n]\) 的信息) ...

  4. Android逆向之旅---静态方式分析破解视频编辑应用「Vue」水印问题

    一.故事背景 现在很多人都喜欢玩文艺,特别是我身边的UI们,拍照一分钟修图半小时.就是为了能够在朋友圈显得逼格高,不过的确是挺好看的,修图的软件太多了就不多说了,而且一般都没有水印啥的.相比较短视频有 ...

  5. 「NOI2004」「LuoguP1486」郁闷的出纳员

    Descrption OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调 ...

  6. 「NOI2012」迷失游乐园

    「NOI2012」迷失游乐园 题目描述 放假了,小Z觉得呆在家里特别无聊,于是决定一个人去游乐园玩. 进入游乐园后,小Z看了看游乐园的地图,发现可以将游乐园抽象成有n个景点.m条道路的无向连通图,且该 ...

  7. 「NOI2017」蚯蚓排队 解题报告

    「NOI2017」蚯蚓排队 这题真的草 你考虑\(k\)这么小,每次合并两个串,增加的有用串的数量是\(O(k^2)\)的,暴力加入这些串,求一下这些串的Hash值,塞到Hash表里面去 这里采用类似 ...

  8. 「MoreThanJava」Day 4:面向对象基础

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  9. 「译」JUnit 5 系列:条件测试

    原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUni ...

随机推荐

  1. idea-创建web.xml模板

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="htt ...

  2. mybatis学习——日志工厂

    为什么要使用日志工厂? 我们想一下,我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率?答案是肯定的,如果一个 数据库相关的操作出现了问题,我们就可以根据输出的S ...

  3. tar与NTP时间同步

    tar备份与恢复 归档和压缩 : 1.方便对零散文件管理    2.减少空间的占用 常见的压缩格式及命令工具: gzip ----> .gz bzip2 ---->.bz2 xz ---- ...

  4. 内核、dns、网卡配置

    升级内核(安装新版软件包) rpm -ivh kernel-3.10.0-123.1.2.el7.x86_64.rpm 二.配置永久IP地址,子网掩码,网关地址   /etc/sysconfig/ne ...

  5. 【NX二次开发】获取指定矩阵标识的矩阵值

    函数:UF_CSYS_ask_matrix_values () 函数说明:获取指定矩阵标识的矩阵值. 用法: #include <uf.h> #include <uf_csys.h& ...

  6. 谷歌浏览器加载驱动(chromedriver)——selenium

    http://chromedriver.storage.googleapis.com/index.html 可以到该网站下载对应的谷歌驱动器(注意:需要版本和操作系统对应,其中windows统一32的 ...

  7. C++中封装和继承的访问权限

    众所周知,C++面向对象的三大特性为:封装,继承和多态.下面我们就先对封装做一些简单的了解.封装是通过C++中的类来完成的,类是一种将抽象转换为用户定义类型的工具.类的定义如下: class circ ...

  8. Golang十六进制字符串和byte数组互转

    Golang十六进制字符串和byte数组互转 需求 Golang十六进制字符串和byte数组互相转换,使用"encoding/hex"包 实现Demo package main i ...

  9. mycat高可用-安全管理-监控 看这一篇就够了

    ​ 在之前的操作中,我们已经实现了mysql机器的高可用,可以动态切换master,那么如果mycat崩溃了呢?我们应该如何处理呢?所以此时就需要搭建mycat的高可用集群了. ​ 在mycat的权威 ...

  10. excel VBA根据单元格内的逗号把内容拆分行

    Sub test1()    Dim h    Dim j As Integer    j = 0  '用于辅助循环的进行,可以在拆分行获取下一个需要拆分单元格的行号    'Application. ...