nzhtl1477-ただいま帰りました ( bfs )
nzhtl1477-ただいま帰りました
题目描述
珂学题意:
你是威廉!你要做黄油蛋糕给珂朵莉吃~!
68号岛有n个商店,有的商店直接有小路连接,小路的长度都为1
格里克告诉了你哪些地方可能有做黄油蛋糕的原料
但是那个人是个坑货,所以
他会告诉你一些商店,然后告诉你距离这些商店距离<= k的商店中都是可能有原料的
然后你要把这些可能的商店每个都去一遍
你想知道你要去多少个商店
由于你是勇者,所以有m次询问
简洁题意:
给你一个图,每次查询的时候给一堆特殊点以及一个数k,求图中有多少点距离至少一个特殊点距离不超过k
边是无向的
输入输出格式
输入格式:
第一行三个数表示n,m,q
之后m行每行两个数x,y表示这两个点之间连有一条边~
之后q次询问,每个询问先给你一个数a和一个数k
之后一行a个数,表示a个特殊点
输出格式:
q行,每行一个数表示答案
输入输出样例
输入样例#1: 复制
5 6 6
2 3
1 3
2 5
1 3
3 2
2 5
1 1
3
1 1
1
1 4
1
1 2
5
1 4
1
1 4
5
输出样例#1: 复制
3
2
4
3
4
4
说明
对于30%的数据,n,m,q <= 100,每次查询只给一个点
对于另外30%的数据,k=1
对于100%的数据,n,m,q <= 5000 , a的和<= 500000
解析
在线操作;将每一个点加入队列中间,类似修改了的spfa算法;
同时将几个点加入,就可以将剩下的点按照离他们最近的中心点的距离计算出来;
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define rint register int inline int read(){
int x=,f=;char ch=getchar();
while(!isdigit(ch)) f=(ch==),ch=getchar();
while( isdigit(ch)) x=(x<<)+(x<<)+(ch^),ch=getchar();
return f?(~x+):x;
} #define man 5050 struct edge{ int next,to;}e[man<<];
int head[man<<],num=; inline void add(int from,int to){
e[++num]=(edge){head[from],to};
head[from]=num;
} int n,m,q;
int dis[man],vis[man],tot,k; int main(){
memset(dis,,sizeof(dis));
n=read();m=read();q=read();
for(rint i=,x,y;i<=m;i++){
x=read();y=read();
add(x,y);add(y,x);
}
for(rint i=,cnt;i<=q;i++){
queue<int>q;tot=;
memset(vis,,sizeof(vis));
memset(dis,,sizeof(dis));
cnt=read();k=read();
for(rint x,i=;i<=cnt;i++){
x=read();
q.push(x);dis[x]=;vis[x]=;
}
do{
int u=q.front();q.pop();
for(rint i=head[u];i;i=e[i].next){
int to=e[i].to;
dis[to]=min(dis[to],dis[u]+);
if(!vis[to]) vis[to]=,q.push(to);
}
}while(q.size());
for(rint i=;i<=n;i++)
if(dis[i]<=k) tot++;
printf("%d\n",tot);
}
return ;
}
nzhtl1477-ただいま帰りました ( bfs )的更多相关文章
- 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)
图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...
- 【BZOJ-1656】The Grove 树木 BFS + 射线法
1656: [Usaco2006 Jan] The Grove 树木 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 186 Solved: 118[Su ...
- POJ 3278 Catch That Cow(bfs)
传送门 Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 80273 Accepted: 25 ...
- POJ 2251 Dungeon Master(3D迷宫 bfs)
传送门 Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28416 Accepted: 11 ...
- Sicily 1215: 脱离地牢(BFS)
这道题按照题意直接BFS即可,主要要注意题意中的相遇是指两种情况:一种是同时到达同一格子,另一种是在移动时相遇,如Paris在(1,2),而Helen在(1,2),若下一步Paris到达(1,1),而 ...
- Sicily 1048: Inverso(BFS)
题意是给出一个3*3的黑白网格,每点击其中一格就会使某些格子的颜色发生转变,求达到目标状态网格的操作.可用BFS搜索解答,用vector储存每次的操作 #include<bits/stdc++. ...
- Sicily 1444: Prime Path(BFS)
题意为给出两个四位素数A.B,每次只能对A的某一位数字进行修改,使它成为另一个四位的素数,问最少经过多少操作,能使A变到B.可以直接进行BFS搜索 #include<bits/stdc++.h& ...
- Sicily 1051: 魔板(BFS+排重)
相对1150题来说,这道题的N可能超过10,所以需要进行排重,即相同状态的魔板不要重复压倒队列里,这里我用map储存操作过的状态,也可以用康托编码来储存状态,这样时间缩短为0.03秒.关于康托展开可以 ...
- Sicily 1150: 简单魔板(BFS)
此题可以使用BFS进行解答,使用8位的十进制数来储存魔板的状态,用BFS进行搜索即可 #include <bits/stdc++.h> using namespace std; int o ...
- ACM/ICPC 之 靠墙走-DFS+BFS(POJ3083)
//POJ3083 //DFS求靠左墙(右墙)走的路径长+BFS求最短路 //Time:0Ms Memory:716K #include<iostream> #include<cst ...
随机推荐
- 并发基础(七) Thread 类的sleep()、yeild()、join()
1.Thread.sleep(long millis ) sleep( )是一个静态方法,让当前正在执行的线程休眠(暂停执行),而且在睡眠的过程是不释放资源的,保持着锁. 在睡眠的过程,可以被中断,注 ...
- selenium+python自动化95-弹出框死活定位不到
前言 部分小伙伴学了selenium的alert后,就不管啥弹出框都去用alert,这是行不通的,看到弹出框,先要确定是不是alert,是才能用,不是的话肯定不能用. 有些弹出框是div层,这种跟平常 ...
- tensorflow读取数据
线程和队列 在使用TensorFlow进行异步计算时,队列是一种强大的机制. 为了感受一下队列,让我们来看一个简单的例子.我们先创建一个“先入先出”的队列(FIFOQueue),并将其内部所有元素初始 ...
- python you-get 下载视频
python使用you-get模块下载视频 pip install you-get # 安装先 怎么用 进入命令行: you-get url 暂停下载:ctrl + c ,继续下载重复 y ...
- ganglia
A.lamp界面快速搭建---------------------------------------------------------------------------------------- ...
- python入门-操作列表
1 Python根据缩进来进行判断代码行与前一个代码行的关系 for name in names: print(name) names = ['baker','david','philp','rose ...
- Redis 的 GEO 特性将在 Redis 3.2 版本释出
Redis 的 GEO 特性将在 Redis 3.2 版本释出, 这个功能可以将用户给定的地理位置信息储存起来, 并对这些信息进行操作. 本文将对 Redis 的 GEO 特性进行介绍, 说明这个特性 ...
- git 提交文件到gitee
1.新建文件夹 打开gitbash 初始化仓库 git.init 2.把要提交的文件copy到文件夹 3.git add. 4.git remote add master(分支) 远程仓库 5 ...
- 使用seaborn制图(小提琴图)
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 设置风格, ...
- class(类的使用说明)
class 的三大特性 封装:内部调用对于外部用户是透明的 继承: 在分类里的属性,方法被自动继承 多态:调用这个功能,可以使多个类同时执行 r1 = Role(r1, 'Alex', 'Police ...