Borg Maze poj3026(一)

2012-12-10 12:47:41 · 作者: · 浏览: 811

  首先这道题不得不让我吐槽下,测试数据太无语了,在输入列和行后,后面竟然还会输空格,所以不能用getchar()去处理'\n',只能用gets(),这样一次性就可以处理掉空格和'\n'。

    然后再说说本题的思想吧,我是先对每个A或S用一次BFS,求出它与其它的A或S的最短距离,然后再以这些A或S建图,求一次最小生成树,然后把所有的边权相加

 

[cpp] 
#include<iostream> 
#include<cstdio> 
#include<cstring> 
using namespace std; 
struct st 

    int x,y,step; 
}w,tmp; 
st q[2505]; 
const int INF=100000000; 
int map[55][55]; 
bool visit[55][55]; 
bool visit1[105]; 
int dist[105][105]; 
int dirt ={0,1,0,-1,1,0,-1,0}; 
int d[105]; 
int t,n,m,num;