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

POJ 3984 bfs

时间:2015-05-01 22:27:06      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

   作了一年的ACMer竟然现在才学BFS。。。

  好吧,BFS第一题

  赤裸裸的裸题

  

  

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 using namespace std;
 5 int a[10][10];
 6 struct node
 7 {
 8     int x,y;
 9 } que[100];
10 int pre[100],vis[10][10];
11 int bfs()
12 {
13 
14     int l = 0,r = 1;
15     memset(vis,0,sizeof(vis));
16     que[0].x = 1;que[0].y = 1;
17     vis[0][0] = 1;pre[0] = -1;
18     while(l<r)
19     {
20         int x = que[l].x,y = que[l].y;
21         for(int i = -1;i<=1;i++)
22             for(int j = -1;j<=1;++j)if((i==0&&j!=0) || (i!=0&&j==0))
23             {
24                 if(a[x+i][y+j]==1||vis[x+i][y+j]||x+i<1||x+i>5||y+j<1||y+j>5)continue;
25                 vis[x+i][y+j] = 1;
26                 que[r].x = x+i;
27                 que[r].y = y+j;
28                 pre[r++] = l;
29                 if(x+i==5&&y+j==5)return r-1;
30             }
31         l++;
32     }
33 
34     return 0;
35 }
36 void print(int x)
37 {
38     if(x==-1)return;
39     print(pre[x]);
40     printf("(%d, %d)\n",que[x].x-1,que[x].y-1);
41 }
42 int main()
43 {
44 //    freopen("in.txt","r",stdin);
45     while(~scanf("%d",&a[1][1]))
46     {
47         for(int i = 1;i<=5;++i)for(int j = (i==1?2:1);j<=5;++j)
48             scanf("%d",&a[i][j]);
49         print(bfs());
50     }
51     return 0;
52 }

 

  

POJ 3984 bfs

标签:

原文地址:http://www.cnblogs.com/GJKACAC/p/4471214.html

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