fzu1408位图
2010-08-25 20:07
302 查看
题目链接:fzu1408 hnu10109
代码:bfs (多源的宽度优先搜索) 见书218页
代码:bfs (多源的宽度优先搜索) 见书218页
]//1<=n,m<=182 #include <iostream> #include <queue> using namespace std; int map[190][190]; //存储各点到最近的白点的步数 int n,m; int move[4][2]={-1,0,0,-1,1,0,0,1}; struct node { int x,y,step;}tmp,front; //x,y,step 用于记录坐标和走的步数 queue <node> list; void bfs() { while(!list.empty()) { front=list.front(); list.pop(); tmp.step=front.step+1; for(int u=0;u<4;u++) { tmp.x=front.x+move[u][0]; tmp.y=front.y+move[u][1]; if(tmp.x>=0&&tmp.x<n&&tmp.y>=0&&tmp.y<m) if(map[tmp.x][tmp.y]==-1) { map[tmp.x][tmp.y]=tmp.step;list.push(tmp);} } } } int main(int argc, char *argv[]) { char ch; int i,j; while(cin>>n>>m) { for(i=0;i<n;i++) for( j=0;j<m;j++) { cin>>ch;map[i][j]=-1; if(ch=='1') { tmp.x=i,tmp.y=j;tmp.step=0; list.push(tmp); map[i][j]=0; } } bfs(); for(i=0;i<n;i++) for(j=0;j<m;j++) if(j<m-1)cout<<map[i][j]<<' '; else cout<<map[i][j]<<endl; } return 0; }
相关文章推荐
- FZU 2087 统计树边(最小生成树)
- FZU 2084--电动车通行证制度 ( 模拟 )
- FZU 2093 找兔子 状压DP
- FZU 2193 So Hard (有限小数转换最简分数)(想法题)
- FZU 2218 Simple String Problem
- FZU-1892(bfs)接水管游戏
- FZU 1895
- FZU 2236 第十四个目标 (线段树)
- FZU 1061 矩阵连乘
- FZU Problem 2232 炉石传说
- fzu 2109 Mountain Number 数位DP
- FZU 2230 翻翻棋 (找规律 水题)
- FZU 2227 邮票【离散化+欧拉路径】
- FZU 2124 吃豆人 BFS
- FZU 1851 组合数 (分解质因数)
- FZU 1911 Construct a Matrix
- FZU 1502 Letter Deletion
- FZU 2141 Sub-Bipartite Graph 贪心
- FZU Problem 2244 Daxia want to buy house
- 解题报告:FZU1692 Key problem 循环矩阵快速幂