poj 1979
来源:互联网 发布:windows娘主题 编辑:程序博客网 时间:2024/04/30 04:11
题意:一个图中只有红点与黑点,一个人站在一个黑点,红点不能到达,问他能到达的黑点的个数。
思路:bfs。没想到还有这么水的广搜!!!!!!
#include<iostream>#include<stdio.h>#include<memory.h>#include<queue>using namespace std;int vis[25][25];char map[25][25];int dirx[]={1,-1,0,0};int diry[]={0,0,1,-1};int h,w;struct node{ int x; int y;};node s;int step;void bfs(){ step=1; queue<node> q; q.push(s); vis[s.x][s.y]=1; node temp,t; while(!q.empty()) { temp=q.front(); q.pop(); for(int i=0;i<4;i++) { if(!vis[temp.x+dirx[i]][temp.y+diry[i]]&&temp.x+dirx[i]>=0&&temp.x+dirx[i]<h&&temp.y+diry[i]>=0&&temp.y+diry[i]<w) { vis[temp.x+dirx[i]][temp.y+diry[i]]=1; t.x=temp.x+dirx[i]; t.y=temp.y+diry[i]; q.push(t); step++; } } } cout<<step<<endl;}int main(){ while(cin>>w>>h) { if(w==0&&h==0)break; for(int i=0;i<h;i++) for(int j=0;j<w;j++) { cin>>map[i][j]; if(map[i][j]=='@') { s.x=i; s.y=j; vis[i][j]=0; } else if(map[i][j]=='.') vis[i][j]=0; else if(map[i][j]=='#') vis[i][j]=1; } bfs(); } return 0;}
- POJ 1979
- POJ 1979
- POJ 1979
- poj 1979
- POJ 1979
- poj 1979
- poj 1979
- poj 1979
- poj 1979
- poj 1979
- poj 1979
- poj 1979
- poj-1979
- poj 1979
- POJ 1979
- Poj-1979
- poj 1979
- POJ 1979
- c++bitset 熟悉位运算的前提下功能不是很强
- USACO 1.1 friday
- cocos2d-x 2.X demo学习笔记 3 ----ActionTest源码 主要是滚动菜单的操作
- 普通人的编辑利器——Vim
- 写尽凄凉,沧桑,却写不出那最后一抹忧伤
- poj 1979
- No result defined for action and result input 和从excel中导入数据 问题
- 如何在Linux下Redis安装
- 简明 Vim 练级攻略
- c,c++里面,头文件里面的ifndef /define/endif的作用
- JS模拟点击-chrome
- 有关个人所得税的计算
- 不同系统之间ABAP对象的迁移
- USACO 1.1 beads