swustoj2521 acmer的约会—状态压缩+bfs

来源:互联网 发布:python 定时发送邮件 编辑:程序博客网 时间:2024/05/20 20:18

一个acmer想要去和妹子约会他们处于一个N行M列的方格地图中acmer在地图左上角坐标为(11)的位置而妹子在地图右下角坐标为(nm)的位置acmer一个单位时间只可以移动到上下左右相邻的一个格子上然而在这个地图中有许多墙和不同颜色的门墙是不可以穿越的只有拿到和门颜色一样的钥匙才能打开对应颜色的门只有两个格子之间的门都被打开了acmer才可以从当前格子走到门另一边的格子acmer当然想要最快时间内到达妹子的位置你能帮助acmer计算出最短到达的时间么?

多组测试数据。第一行输入三个整数,N、M、P,分别表示地图有N行M列,P种颜色的门(1 <= N,M <= 50 , 0 <= P <= 10)第二行输入一个整数K,表示有墙和门的数量总共有K个(0 <= K <= 500)接下来K行,每行输入5个整数,xi1,yi1,xi2,yi2,gi。如果gi值为0,表示格子(xi1,yi1)和格子(xi2,yi2)之间有墙,如果gi>=1,表示格子(xi1,yi1)和格子(xi2,yi2)之间有一个gi颜色的门。接下来输入一个整数S,表示有数量为S的钥匙在迷宫中(0 <= S <= 50)接下来S行,每行输入3个整数,xi1,yi1,qi,表示格子(xi1,yi1)含有颜色为qi的钥匙。1 <= xi1,xi2 <= N   1 <= yi1,yi2 <= M    | xi1 - xi2 | + | yi1 - yi2 |=1               0 <= gi <= P   1 <= qi <= P
输出一个整数表示acmer最短到达妹子位置的时间,如果acmer不能到达妹子的位置,则输出"zhuding gudu yisheng"(引号不用输出)
4 4 991 2 1 3 21 2 2 2 02 1 2 2 02 1 3 1 02 3 3 3 02 4 3 4 13 2 3 3 03 3 4 3 04 3 4 4 022 1 24 2 1
14
0 0
原创粉丝点击