码迷,mamicode.com
首页 > 其他好文 > 详细

hdu - 2645 find the nearest station (bfs水)

时间:2015-06-02 21:45:43      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

http://acm.hdu.edu.cn/showproblem.php?pid=2645

找出每个点到距离最近的车站的距离。

直接bfs就好。

 1 #include <cstdio>
 2 #include <queue>
 3 #include <cstring>
 4 using namespace std;
 5 int n,m;
 6 int maze[200][200],dis[200][200],vis[200][200];
 7 int dir[4][2]={-1,0,1,0,0,1,0,-1};
 8 struct point
 9 {
10     int x,y,step;
11 };
12 
13 int bfs(int a,int b)
14 {
15    // printf("%d %d\n",a,b);
16     memset(vis,0,sizeof(vis));
17     queue<point>que;
18     point s;
19     s.x=a;s.y=b;s.step=0;
20     que.push(s);
21     vis[s.x][s.y]=1;
22     while(!que.empty())
23     {
24         point e=que.front();que.pop();
25        // printf("%d %d %d\n",e.x,e.y,e.step);
26         if(maze[e.x][e.y]) return e.step;
27         for(int i=0;i<4;i++)
28         {
29             s.x=e.x+dir[i][0];
30             s.y=e.y+dir[i][1];
31             if(!vis[s.x][s.y]&&s.x>=0&&s.x<n&&s.y>=0&&s.y<m)
32             {
33                 vis[s.x][s.y]=1;
34                 s.step=e.step+1;
35                 que.push(s);
36             }
37         }
38     }
39 }
40 
41 int main()
42 {
43    // freopen("a.txt","r",stdin);
44     char s[200];
45     while(~scanf("%d%d",&n,&m))
46     {
47         for(int i=0;i<n;i++)
48         {
49             scanf("%s",s);
50             for(int j=0;j<m;j++)
51             {
52                 maze[i][j]=s[j]-0;
53                 //printf("%d\n",maze[i][j]);
54             }
55         }
56         memset(dis,0,sizeof(dis));
57         for(int i=0;i<n;i++)
58             for(int j=0;j<m;j++)
59             if(!maze[i][j])
60                dis[i][j]=bfs(i,j);
61         for(int i=0;i<n;i++)
62         {
63             for(int j=0;j<m-1;j++)
64                 printf("%d ",dis[i][j]);
65             printf("%d\n",dis[i][m-1]);
66         }
67     }
68     return 0;
69 }

 

hdu - 2645 find the nearest station (bfs水)

标签:

原文地址:http://www.cnblogs.com/nowandforever/p/4547650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!