SPOJ 206 BITMAP (BFS)
来源:互联网 发布:focusky模板 知乎 编辑:程序博客网 时间:2024/04/26 15:38
http://www.spoj.com/problems/BITMAP/
这题一开始我用n^2遍BFS带剪枝做的,当然TLE,后来只从白点开始BFS,效率稍高,但还是TLE,后来在加了一条如果扩展节点为白色就continue的剪枝,结果竟然WA。原来我是边输入边BFS,有些白点还没有读入就开始搜索了。
AC代码:
#include <cassert>#include <cctype>#include <cerrno>#include <cfloat>#include <ciso646>#include <climits>#include <clocale>#include <cmath>#include <csetjmp>#include <csignal>#include <cstdarg>#include <cstddef>#include <cstdio>#include <cstdlib>#include <cstring>#include <ctime>#include <complex>#include <algorithm>#include <bitset>#include <complex>#include <deque>#include <exception>#include <fstream>#include <functional>#include <iomanip>#include <ios>#include <iosfwd>#include <iostream>#include <istream>#include <iterator>#include <limits>#include <list>#include <locale>#include <map>#include <memory>#include <new>#include <numeric>#include <ostream>#include <queue>#include <set>#include <sstream>#include <stack>#include <stdexcept>#include <streambuf>#include <string>#include <typeinfo>#include <utility>#include <valarray>#include <vector>#define INF 1000000007/*Problem: BitmapSource: SPOJ 206 (BITMAP)Author: fts2001*/using namespace std;typedef pair<int,int> pii;typedef pair<pii,int> ppi;int t,n,m,bm[185][185],d[185][185];const int dx[]={1,-1,0,0};const int dy[]={0,0,1,-1};void bfs(int x,int y){queue<ppi> q;q.push(ppi(pii(x,y),0));d[x][y]=0;while(!q.empty()){int r=q.front().first.first;int c=q.front().first.second;int l=q.front().second;q.pop();for(int i=0;i<4;i++){int nr=r+dx[i],nc=c+dy[i];if(nr<0 || nr>=n || nc<0 || nc>=m)continue;if(bm[nr][nc])continue;if(l+1>=d[nr][nc])continue;d[nr][nc]=l+1;q.push(ppi(pii(nr,nc),l+1));}}}int main(){scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(int i=0;i<n;i++){getchar();for(int j=0;j<m;j++){char ch=getchar();bm[i][j]=ch-'0';d[i][j]=INF;}}for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(bm[i][j])bfs(i,j);}}for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(j)putchar(' ');printf("%d",d[i][j]);}putchar('\n');}}return 0;}
0 0
- SPOJ 206 BITMAP (BFS)
- SPOJ 206 BITMAP(BFS+剪枝)
- SPOJ BITMAP
- BFS+SPOJ AMR11J
- SPOJ SERGRID 【BFS】
- SPOJ-SERGRID Grid(BFS)
- SPOJ LAS(BFS)
- SPOJ 370 SPOJ ONEZERO(BFS + 递归)
- SPOJ-Grid ,水广搜easy bfs
- SPOJ 338 Roads BFS+优先队列
- spoj Goblin Wars(简单bfs)
- 【SPOJ-ABCPATH】ABC Path【BFS/DFS】
- SPOJ SERGRID Grid BFS搜索算法
- SPOJ PARADOX Paradox bfs + 缩点
- spoj 208 Store-keeper bfs+重联通分量
- hdu 1664 Different Digits, spoj 3929 , 同余,bfs
- SPOJ
- SPOJ
- c++this指针
- Xiao Ming's Hope
- 11111111111
- OpenCV混合高斯模型函数注释说明
- LeetCode 24 Reverse Nodes in k-Group
- SPOJ 206 BITMAP (BFS)
- hdu 4956 Poor Hanamichi(暴力)
- POJ 1459 Power Network(ISAP 裸最大流)
- ZOJ-3725
- C++中int *p[4]和 int (*q)[4]的区别
- 《TCP/IP详解卷2:实现》笔记--IP多播
- JAVA cp 命令
- HDOJ 题目1181变形课(dfs)
- 影响个人创业成功的“5商”