【图论最短路】【CQBZOJ 1633】【图论专项赛】位图
来源:互联网 发布:linux uname -a 编辑:程序博客网 时间:2024/06/07 04:07
问题 E(1633): 【图论专项赛】位图
时间限制: 1 Sec 内存限制: 64 MB
题目描述
给出一个大小为n行*m列的矩形位图。该位图的每一个象素点不是白色就是黑色,但是至少有一个象素点是白色。在i行j列的象素点我们称为点(i,j)。
两个象素点
现在的任务是:对于每一个象素点,计算它到最近的白色点的距离。如果它本身是白色点,距离为0。
输入
第1行:2个整数n,m(1<=n <=182,1<=m<=182)
接下来n行,每一行有一个长度为m的0/1字符串,描述一行象素点。如果点(i,j)为白色,则值为1,否则值为0。
输出
共n行,每行有m个整数,数之间用1个空格分开,分别表示对应的象素点距离白色点的距离。
样例输入
3 4
0001
0011
0110
样例输出
3 2 1 0
2 1 0 0
1 0 0 1
菜题,对于每一个白点,都做一遍bfs,更新最小距离。
#include<cstdio>#include<iostream>#include<cstring>#include<cmath>#include<algorithm>#include<queue>using namespace std;#define MAXN 182#define MAXM 182#define INF 0x3f3f3f3ftypedef long long int LL;int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};struct point{ int x,y; point(){} point(int a,int b):x(a),y(b){}};int M,N;bool G[MAXM+10][MAXN+10];queue<point>que;int dist[MAXM+10][MAXN+10];bool vis[MAXM+10][MAXN+10];void Spfa(){ memset(dist,0x3f,sizeof(dist)); memset(vis,0,sizeof(vis)); while(!que.empty())que.pop(); for(int i=1;i<=M;++i) for(int j=1;j<=N;++j) if(G[i][j]) { dist[i][j]=0; que.push(point(i,j)); vis[i][j]=1; } point now; int nx,ny; while(!que.empty()) { now=que.front();que.pop(); vis[now.x][now.y]=0; for(int i=0;i<4;++i) { nx=now.x+dir[i][0],ny=now.y+dir[i][1]; if(nx<1||ny<1||nx>M||ny>N)continue; if(dist[nx][ny]>dist[now.x][now.y]+1) { dist[nx][ny]=dist[now.x][now.y]+1; if(!vis[nx][ny]) { vis[nx][ny]=1; que.push(point(nx,ny)); } } } }}int main(){ scanf("%d%d",&M,&N); int i,j; char str[MAXN+10]; for(i=1;i<=M;++i) { scanf("%s",str+1); for(j=1;j<=N;++j) G[i][j]=(str[j]=='1'); } Spfa(); for(i=1;i<=M;++i) { for(j=1;j<N;++j) printf("%d ",dist[i][j]); printf("%d\n",dist[i][N]); }}
2 0
- 【图论最短路】【CQBZOJ 1633】【图论专项赛】位图
- 【图论最短路】【CQBZOJ 1634】【图论专项赛】外星人入侵
- 【图论+二分】【CQBZOJ 1635】【图论专项赛】无线通讯网
- 【图论最短路】【CQBZOJ 2419】百进制数
- 【图论最短路】【CQBZOJ 2431】Trick
- 【图论最短路】【CQBZOJ 2432】Maze
- 【图论最短路】【CQBZOJ 1550】避开怪兽
- jzoj 3076. 【备战NOIP2012图论专项模拟试题】位图
- 【备战NOIP2012图论专项模拟试题】位图
- 【图论网络流】【CQBZOJ 2433】Dormitory
- 纪中3076【备战NOIP2012图论专项模拟试题】位图 题解
- 3076. 【备战NOIP2012图论专项模拟试题】位图 (Standard IO)
- 图论专项训练习题集
- 图论专项练习反思
- CQBZOJ 【重庆市NOIP模拟赛】避难向导
- 图论专项shortest_paths:UVa 10246
- 图论专项shortest_paths:UVa 11280
- 图论专项shortest_paths:UVa 658
- 博客转址
- 最小生成树-普里姆算法(Prim)
- 链表反向输出
- testNG参数化之excel读取数据
- uboot启动流程详解(1)-_start
- 【图论最短路】【CQBZOJ 1633】【图论专项赛】位图
- 关于Xsell共享文件输入网络凭据的解决办法
- 内存泄露之前因后果
- C++多线程-第三篇-Thread(线程)
- this指针与虚表
- 封装Okhttp(Gson一起封装在里面减少了解析的操作)
- ROS nodelet-----编写一个nodelet插件
- Sql语句复制表结构
- 2015