VJ--图论---BFS搜索啊搜索,又改了好久,原因是:首先是第一个忘记标记啦,后来又发现队列开小啦,各种错啊!!
来源:互联网 发布:linux 翻页查看日志 编辑:程序博客网 时间:2024/05/22 03:22
#include <stdio.h>#include <stdlib.h>#include <string.h>char map[105][105];int vis[105][105];int mv[8][2]= {{1,0},{0,1},{-1,0},{0,-1},{1,1},{-1,1},{1,-1},{-1,-1}};int s;int m,n;struct A{ int x; int y;} p[10050];int enter=0,out=0;struct A f,t;int getdian(){ int i,j; for(i=0; i<m; i++) { for(j=0; j<n; j++) { if(map[i][j]=='@'&&!vis[i][j]) break; } if(j<n) break; } if(i>=m&&j>=n) return s; else { s++; vis[i][j]=1; BFS(i,j); }}void BFS(int x,int y){ int i; f.x=x; f.y=y; p[enter++]=f; while(out<enter) { t=p[out++]; for(i=0; i<8; i++) { f.x=t.x+mv[i][0]; f.y=t.y+mv[i][1]; if(0<=f.x&&f.x<m&&0<=f.y&&f.y<n&&!vis[f.x][f.y]&&map[f.x][f.y]=='@') { vis[f.x][f.y]=1; p[enter++]=f; } } } if(out>=enter) getdian();}int main(){ int i; int t; while(~scanf("%d%d",&m,&n)&&m&&n) { memset(vis,0,sizeof(vis)); s=0; for(i=0; i<m; i++) scanf("%*c%s",map[i]); printf("%d\n",getdian()); } return 0;}
0 0
- VJ--图论---BFS搜索啊搜索,又改了好久,原因是:首先是第一个忘记标记啦,后来又发现队列开小啦,各种错啊!!
- 第一个网站 又是一条教训啊
- 又是好久没有写博客了,以后要坚持啊。
- hdu1312(又是简单搜索题)
- 又是小游戏来啦!
- 又是星期六了
- 又是一年了
- 又是一年了
- 又是期末了
- 又是一年了。
- 又是一年了
- 5.12汶川大地震后每天都在关注,现在又是第一个周一了,。
- 萌新又试水了,这是第一个做好的程序
- 又是毒奶粉啊
- 又是新的一年, 回来是不是发现钥匙串里的证书都失效啦
- 啊好久没写了- -。。。 现在又开始系统的刷题了,所以还是写写吧- - 首先附上第一道线段树模板题- -。。。
- 又是一个半月了
- 又是一个月了
- 最大流 算法摘记
- 使用T4模板为EF框架添加数据库实体注释
- 1064. Complete Binary Search Tree (30)
- 转载转载转载转载转载转载
- 寻找数组中只出现一次的数 java实现
- VJ--图论---BFS搜索啊搜索,又改了好久,原因是:首先是第一个忘记标记啦,后来又发现队列开小啦,各种错啊!!
- SOCKET,TCP/UDP,HTTP,FTP浅析
- 自己留着用的 .net 图片水印 方法
- 设计模式C++实现(4)——单例模式
- 程序设计,猫叫了,老鼠跑了,主人醒了~
- bat文件执行sql语句
- Java中的==和equals区别
- 怎样用mvn插件自动把项目部署到服务器
- poj 1222EXTENDED LIGHTS OUT