P1332 血色先锋队

P1332 血色先锋队

题目描述

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

军团是一个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

说明

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

广搜,搜全图

 1 #include<cstdio>
 2 #include<queue>
 3 #include<algorithm>
 4 using namespace std;
 5
 6 const int MAXN = 510;
 7 struct node{
 8     int x,y;
 9 }cur,nxt;
10 struct que{
11     int x,y;
12 }que[250100];
13 int ans[MAXN][MAXN];
14 bool v[MAXN][MAXN];
15 int dx[4] = {0,0,1,-1};
16 int dy[4] = {1,-1,0,0};
17 int a,b,n,m;
18 queue<node>q;
19
20 int main()
21 {
22     scanf("%d%d%d%d",&n,&m,&a,&b);
23     for (int x,y,i=1; i<=a; ++i)
24     {
25         scanf("%d%d",&x,&y);
26         cur.x = x;
27         cur.y = y;
28         q.push(cur);
29         v[x][y] = true;
30         ans[x][y] = 0;
31     }
32     for (int x,y,i=1; i<=b; ++i)
33     {
34         scanf("%d%d",&x,&y);
35         que[i].x = x;
36         que[i].y = y;
37     }
38     while (!q.empty())
39     {
40         cur = q.front();
41         q.pop();
42         for (int i=0; i<4; ++i)
43         {
44             int xx = cur.x+dx[i];
45             int yy = cur.y+dy[i];
46             if (xx>0&&yy>0&&xx<=n&&yy<=m&&!v[xx][yy])
47             {
48                 v[xx][yy] = true;
49                 ans[xx][yy] = ans[cur.x][cur.y]+1;
50                 nxt.x = xx;
51                 nxt.y = yy;
52                 q.push(nxt);
53             }
54         }
55     }
56     for (int i=1; i<=b; ++i)
57         printf("%d\n",ans[que[i].x][que[i].y]);
58     return 0;
59 }
时间: 2024-10-12 20:30:18

P1332 血色先锋队的相关文章

luogu P1332 血色先锋队

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

luogu P1332 血色先锋队[bfs]

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

[CODEVS1537] 血色先锋队 - BFS

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

大神刷题表

9月27日 后缀数组:[wikioi3160]最长公共子串 dp:NOIP2001统计单词个数 后缀自动机:[spoj1812]Longest Common Substring II [wikioi3160]最长公共子串 [spoj7258]Lexicographical Substring Search 扫描线+set:[poj2932]Coneology 扫描线+set+树上删边游戏:[FJOI2013]圆形游戏 结论:[bzoj3706][FJ2014集训]反色刷 最小环:[poj1734

对于搜索的新理解

搜索是什么? 1.问题全状态空间 2.搜索空间 3.解路径 分类 一,盲目搜索(只是搜索的顺序不同) 1.深度优先搜索 2.宽度优先搜索 二,启发式搜索 A*算法 分类来讲 1.深度优先搜索 例题:皇后问题 存在的问题:1.深度问题,2.死循环问题 解决办法:1.对搜索深度加以限制                   2.记录从初始状态到当前状态的路径 性质:一般不能保证找到最优解           当深度现在不合理时,可能找不到解,可以将算法改为可变深度限制           最坏的情况,

青春的血色——读《血色浪漫》

我和许多朋友一样,读书的速度远比不上买书的速度.如果把书比作老婆,我经常是看上一个手没焐热就去琢磨另一个.搞得自己三妻四妾还得一个一个哄.男人的花心如果只用在读书上,女人估计要放鞭炮了. 言归正传.这些日子我看了一本书-<血色浪漫>.书的名字应该再加上四个字,"北京人的".这本书算是北京老三届这代人的一个命运缩影.看这本书的时候感觉是一群人叽叽喳喳在耳边闹呼.钟岳民和小伙伴们贫得可以.北京方言说起来黏,吐出去绕,拐着弯的像在串胡同,话放出去飘逸得像旦角转身后把长袖子往两边一

【美妆讨论】化妆有术!让你重返18岁!

年龄永远是女人的大忌,想要留住年轻,不再为被问到年龄而感到尴尬,来跟小M学习化妆技巧啊,保证让你天天18岁! 技巧一:把皮肤彻底清洁干净 化妆前,一定要用洁面乳清洁皮肤,这是非常关键的一步,对化妆效果有很棒的辅助作用.清洁皮肤主要是为了去除油脂增加皮肤的张力,使化妆品更好地与皮肤贴合,这样妆容不易花掉,而且看起来更加清新通透自然. 技巧二:选择淡黄色粉底液 粉底液有很好的遮瑕效果.深色粉底液少量运用可以使五官看起来更加立体,但不可大面积使用:亚洲人一般的肤色无法驾驭较浅的粉底液,不推荐使用.最佳

DNF NPK包名对照一览表

文章转载自:http://bbs.exrpg.com/thread-107917-1-1.html ┌ sprite.NPK                                                  登陆界面├ sprite_character.NPK                                        默认角色头像和角色轮廓├ sprite_character_common.NPK                               

我们是如何构建复杂软件系统的

如今,现代互联网软件应用已经成为一项需要很多人一起构建与维护的庞大工程. 我们是怎么构建复杂软件系统的呢? 一切源于对人类生存处境和现实问题的洞察和思考. 计算机起源于大量科学计算的需求: 接着, 通信成为重要驱动力: 紧接着, 万维网与分享成为主流, 搜索引擎助力:  然后, 智能手机催生了移动时代的来临, 进而引起云计算和大数据的技术变革: 在云计算和大数据之上,构建智能精准的业务. 产品经理是洞察人们处境和需求的先锋队,是产品成长的守护者: 项目经理组织协调资源,在可接受的成本下督导项目与