题目名称 252. [POI 2001] 蚂蚁和瓢虫
输入输出 mro.in/out
难度等级 ★★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 16
题目来源 GravatarBYVoid 于2009-02-02加入
开放分组 全部用户
提交状态
分类标签
图论 搜索法
分享题解
通过:1, 提交:2, 通过率:50%
GravatarBYVoid 100 0.138 s 19.61 MiB C++
Gravatar☜怪盗基德☞ 0 8.269 s 104.73 MiB C++
本题关联比赛
20120810
关于 蚂蚁和瓢虫 的近10条评论(全部评论)

252. [POI 2001] 蚂蚁和瓢虫

★★☆   输入文件:mro.in   输出文件:mro.out   简单对比
时间限制:1 s   内存限制:128 MiB

蚂蚁和蚜虫是共生的。蚜虫分泌出蜜汁给蚂蚁引用。蚂蚁帮助蚜虫赶走它的天敌——瓢虫。在蚂蚁山附近有一个树,这里是蚜虫生活的地方。蚜虫吸取树的汁 液。有n个蚂蚁兵,用1到n编号。一个瓢虫威胁着这个文明,它经常出现在蚜虫活动的地方。当瓢虫坐在树上时,蚂蚁兵会出动把它赶走。他们按照如下的规则:

树上的任意两点之间都只有一条路径,所有的蚂蚁都沿着它所在点到瓢虫的路径前进,每移动一个位置,花的时间是单位1。

  • 如果蚂蚁和瓢虫在同一个位置,那么蚂蚁立即把它赶走。
  • 如果某个蚂蚁的路径上有另外一只蚂蚁,那么距离目标较远的蚂蚁待在原地不动,较近的那个蚂蚁继续前进。
  • 如果有多个蚂蚁要进入同一个位置,那么选择编号最小的蚂蚁,其余的蚂蚁留在原位置不动。
  • 当蚂蚁到达了瓢虫的位置以后,把它赶走,然后停留在该位置。

瓢虫是非常顽固的动物,它被赶走了以后还会再停留到别的位置。然后蚂蚁继续行动。为了使问题简单化,我们假定从一个位置到达与它相邻的位置花1个单位的时间。

任务:

读入树的描述,蚂蚁的开始位置,以及瓢虫停留地点。 给出每个蚂蚁的最后的位置,以及该蚂蚁赶走瓢虫的次数。

输入:

文件的第一行,一个整数n,1<=n<=5000。表示地点的编号。接下来n-1行描述了树里的边,每行两个整数a和b,表示 这两点之间相连。然后一行是整数k,1<=k<=1000 and k<=n。是蚂蚁兵的数目。接下来k行,每行一个整数,表示蚂蚁兵开始的位置。没有两个蚂蚁位于一个位置。然后是一个整数l, 1<=l<=500,即瓢虫停留l次。下面的l行每行一个整数,表示瓢虫依次停留的位置。

输出:

k行。每行两个整数,分别表示第k个蚂蚁最后的位置以及它赶走瓢虫的次数。

Sample Input

4
1 2
1 3
2 4
2
1
2
2
2
4

Sample Output

1 0
4 2

Figure

Image:Mro.gif