题目描述

巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气息的生物。孤立于联盟和部落的血色先锋军很快就遭到了天灾军团的重重包围,现在他们将主力只好聚集了起来,以抵抗天灾军团的围剿。可怕的是,他们之中有人感染上了亡灵瘟疫,如果不设法阻止瘟疫的扩散,很快就会遭到灭顶之灾。大领主阿比迪斯已经开始调查瘟疫的源头。原来是血色先锋军的内部出现了叛徒,这个叛徒已经投靠了天灾军团,想要将整个血色先锋军全部转化为天灾军团!无需惊讶,你就是那个叛徒。在你的行踪败露之前,要尽快完成巫妖王交给你的任务。

军团是一个N行M列的矩阵,每个单元是一个血色先锋军的成员。感染瘟疫的人,每过一个小时,就会向四周扩散瘟疫,直到所有人全部感染上瘟疫。你已经掌握了感染源的位置,任务是算出血色先锋军的领主们感染瘟疫的时间,并且将它报告给巫妖王,以便对血色先锋军进行一轮有针对性的围剿。

输入输出格式

输入格式:

第1行:四个整数N,M,A,B,表示军团矩阵有N行M列。有A个感染源,B为血色敢死队中领主的数量。

接下来A行:每行有两个整数x,y,表示感染源在第x行第y列。

接下来B行:每行有两个整数x,y,表示领主的位置在第x行第y列。

【数据规模】

1<=M,N<=500

1<=A,B<=M*N

输出格式:

第1至B行:每行一个整数,表示这个领主感染瘟疫的时间,输出顺序与输入顺序一致。如果某个人的位置在感染源,那么他感染瘟疫的时间为0。

输入输出样例

输入样例#1:

5 4 2 3
1 1
5 4
3 3
5 3
2 4
输出样例#1:

3
1
3

说明

如下图,标记出了所有人感染瘟疫的时间以及感染源和领主的位置。


发现年段布置的水题没有做啊。。。于是花10分钟水一下。。。

可是,由于没有发现领主们跟感染源站在一起(还有这么傻的?),对对对,我没有1A

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
using namespace std; typedef pair<int,int> PII; struct node{
int x,y,dep;
node(int x=,int y=,int dep=):
x(x),y(y),dep(dep){}
}; const int maxn=; int n,m,n1,n2,get=;
int site[maxn][maxn],vis[maxn][maxn];
int ans[maxn*maxn];
int dx[]={,-,,},dy[]={-,,,};
queue<node> que; void init(){
scanf("%d%d%d%d",&n,&m,&n1,&n2);
for(int i=,x,y;i<=n1;i++){
scanf("%d%d",&x,&y);
vis[x][y]=;
que.push(node(x,y,));
}
for(int i=,x,y;i<=n2;i++){
scanf("%d%d",&x,&y);
if(vis[x][y]) get++;
site[x][y]=i;
}
} void bfs(){
while(){
node pos=que.front(); que.pop();
int posx=pos.x,posy=pos.y,posdep=pos.dep;
for(int i=;i<;i++){
int nxtx=posx+dx[i],nxty=posy+dy[i];
if(nxtx>=&&nxtx<=n&&nxty>=&&nxty<=m)
if(!vis[nxtx][nxty]){
vis[nxtx][nxty]=;
que.push(node(nxtx,nxty,posdep+));
if(site[nxtx][nxty]){
ans[site[nxtx][nxty]]=posdep+;
if(++get==n2) return;
}
}
}
}
} int main(){
init();
bfs();
for(int i=;i<=n2;i++)
printf("%d\n",ans[i]);
return ;
}

luogu P1332 血色先锋队[bfs]的更多相关文章

  1. luogu P1332 血色先锋队

    题目描述 巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气息的生物.孤立于联盟和部落的血色先锋军很快就遭到了天灾军团的重重包围,现在他们将主力只好 ...

  2. P1332 血色先锋队

    P1332 血色先锋队 题目描述 巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气息的生物.孤立于联盟和部落的血色先锋军很快就遭到了天灾军团的重重 ...

  3. 洛谷 P1332 血色先锋队

    P1332 血色先锋队 题目描述 巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气息的生物.孤立于联盟和部落的血色先锋军很快就遭到了天灾军团的重重 ...

  4. [CODEVS1537] 血色先锋队 - BFS

    题目描述 Description 巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气息的生物.孤立于联盟和部落的血色先锋军很快就遭到了天灾军团的重重 ...

  5. 题解 【洛谷P1332】血色先锋队

    题面:https://www.luogu.org/problemnew/show/P1332 很容易看出,这是一个典型的广度优先搜索,也就是众多OIer口中的bfs. 先给各位普及一下bfs(部分来自 ...

  6. 【u007】血色先锋队

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气 ...

  7. P1189 SEARCH—搜索

    将这题加进来的原因 因为他的优化令人眼前一新! 题目传送门() 相似的题目之 血色先锋队 ↑这一题也要用到标记数组 优化!!! 对于一个位置, 如果他在同样的深度再一次被访问,那他接下来所走的路径,所 ...

  8. luogu题解P1032字串变换--BFS+STL:string骚操作

    题目链接 https://www.luogu.org/problemnew/show/P1032 分析 这题本来很裸的一个BFS,发现其中的字符串操作好烦啊.然后就翻大佬题解发现用STL中的strin ...

  9. luogu 2296 寻找道路 简单BFS

    简单的BFS,练习基础 #include<bits/stdc++.h> #define rep(i,x,y) for(register int i=x;i<=y;i++) #defi ...

随机推荐

  1. TRUNCATE - 清空一个表

    SYNOPSIS TRUNCATE [ TABLE ] name DESCRIPTION 描述 TRUNCATE 快速地从一个表中删除所有行.它和无条件的 DELETE 有同样的效果,不过因为它不做表 ...

  2. 深度探索C++对象模型读书笔记-第六章执行期语意学

    在函数中,编译器会帮助将析构函数(Destructor) 安插在相应的位置.对于函数中的局部对象,会将析构函数安插在对象的每一个离开点. 例如: 1: void Function(int a) { 2 ...

  3. Python 3.3 IDLE 删除键出现空格卡顿

    Python 3.3 IDLE 删除文字时会出现"□",造成删除键卡顿 原因:使用的是百度输入法,由于输入法的编码方式不同,对IDLE造成了不兼容 换成了搜狗输入法问题解决.... ...

  4. Centos 添加 sudo 用户

    说明以下的 <username>字样 是 用户名 新增用户 # 终端命令 useradd <username> 举例: useradd <username> -s ...

  5. 【JZOJ6411】上网

    description analysis 如果把所有大小关系连成边,小的往大的连,就可以直接上拓扑 暴力连边时间复杂度\(O(n^2)\),然而连边的过程,考虑用线段树优化 线段树上的所有儿子节点向父 ...

  6. vue中使用腾讯云Im

    在vue中使用腾讯云Im 通信时,官方给出的文档及sdk提供的都是es5的写法.我们在vue中使用均需要用es6的方式来改写sdk的js文件及按自己所需要的业务调用对应的api就行了 1.对sdk的j ...

  7. 简单理解js回调函数

    前言 其实回调函数简单通俗点就是当有a和b两个函数,当a作为参数传给b,并在b中执行,这时a就是一个回调(callback)函数,如果a是一个匿名函数,则为匿名回调函数那下面们来通过一个实例来具体解释 ...

  8. detours3.0文档翻译

    拦截二进制函数 Detours库可以在运行过程中动态拦截函数调用.detours将目标函数前几个指令替换为一个无条件跳转,跳转到用户定义的detour函数.被拦截的函数保存在trampoline函数中 ...

  9. 暴力”注入Explorer

    暴力"注入Explorer                      pjf(jfpan20000@sina.com)         向一个运行中的进程注入自己的代码,最自然莫过于使用Cr ...

  10. 修改linux默认语言

    linux修改默认语言   编辑/etc/sysconfig/i18n这个文件(不存在就新建一个),原内容如下: LANG="en_US.UTF-8" SYSFONT=" ...