[Bfs 乱搞] BZOJ 3137 [Baltic2013]tracks
来源:互联网 发布:history.go 刷新数据 编辑:程序博客网 时间:2024/06/07 03:51
跟省选day2讲的一道题好像...
#include<cstdio>#include<cstdlib>#include<algorithm>#include<queue>#include<cstring>using namespace std;inline char nc(){static char buf[100000],*p1=buf,*p2=buf;if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF; }return *p1++;}inline void read(int &x){char c=nc(),b=1;for (;!(c>='0' && c<='9');c=nc()) if (c=='-') b=-1;for (x=0;c>='0' && c<='9';x=x*10+c-'0',c=nc()); x*=b;}inline void read(char *s){char c=nc(); int len=0;for (;c!='F' && c!='R' && c!='.';c=nc());for (;c=='F' || c=='R' || c=='.';s[++len]=c,c=nc()); s[++len]=0;}const int N=4005;int n,m;char Map[N][N];int dis[N][N];const int dx[]={0,0,1,-1};const int dy[]={1,-1,0,0};struct abcd{int x,y;abcd(int x=0,int y=0):x(x),y(y) { }abcd nxt(int k){ return abcd(x+dx[k],y+dy[k]); }char clr() { return Map[x][y]; }};queue<abcd> Q;inline void bfs(abcd s){queue<abcd> q; abcd u;q.push(s);while (!q.empty()){u=q.front(); q.pop();for (int k=0;k<4;k++)if (u.x+dx[k]>0 && u.x+dx[k]<=n && u.y+dy[k]>0 && u.y+dy[k]<=m)if (u.nxt(k).clr()==u.clr() && !dis[u.x+dx[k]][u.y+dy[k]]){dis[u.x+dx[k]][u.y+dy[k]]=dis[s.x][s.y];q.push(u.nxt(k)); Q.push(u.nxt(k));}}}inline void bfs(){abcd u;Q.push(abcd(1,1)); dis[1][1]=1;bfs(abcd(1,1));//for (int i=1;i<=n;i++,putchar('\n')) for (int j=1;j<=m;j++,putchar(' ')) printf("%d",dis[i][j]); printf("\n");while (!Q.empty()){u=Q.front(); Q.pop();for (int k=0;k<4;k++)if (u.x+dx[k]>0 && u.x+dx[k]<=n && u.y+dy[k]>0 && u.y+dy[k]<=m)if (u.nxt(k).clr()!='.' && u.nxt(k).clr()!=u.clr() && !dis[u.x+dx[k]][u.y+dy[k]]){dis[u.x+dx[k]][u.y+dy[k]]=dis[u.x][u.y]+1;Q.push(u.nxt(k));bfs(u.nxt(k));//for (int i=1;i<=n;i++,putchar('\n')) for (int j=1;j<=m;j++,putchar(' ')) printf("%d",dis[i][j]); printf("\n");}}}int main(){freopen("t.in","r",stdin);freopen("t.out","w",stdout);read(n); read(m);for (int i=1;i<=n;i++)read(Map[i]);bfs();int ans=0;for (int i=1;i<=n;i++)for (int j=1;j<=m;j++)ans=max(ans,dis[i][j]);printf("%d\n",ans);return 0;}
0 0
- [Bfs 乱搞] BZOJ 3137 [Baltic2013]tracks
- BZOJ 3135: [Baltic2013]pipes
- UVa 298 Race Tracks [BFS]
- BZOJ 1257 - 数学题 乱搞
- BZOJ 4236 set乱搞
- [分类讨论 思路题] BZOJ 3135 [Baltic2013] pipes
- HDU 5961 传递 bfs乱搞
- 【BZOJ】【P3707】【圈地】【题解】【乱搞】
- BZOJ 4216 Pig 分块乱搞
- [树 乱搞] BZOJ 4238 电压
- bzoj 2079: [Poi2010]Guilds 乱搞
- bzoj 2529: [Poi2011]Sticks 乱搞
- 【bzoj 2627】JZPTAB - 乱搞数学题
- [乱搞] BZOJ 1141 [POI2009]Slw
- bzoj 2213: [Poi2011]Difference 乱搞
- bzoj 4236: JOIOJI map+乱搞
- bzoj 1142: [POI2009]Tab 乱搞
- bzoj 3715: [PA2014]Lustra 乱搞
- Yii2.0 初识 RESTful Serializer
- 使用SpringBoot快速实现接口测试
- 专题三 Problem O
- Activity相关
- 如何使用CCRenderTexture来创建动态纹理
- [Bfs 乱搞] BZOJ 3137 [Baltic2013]tracks
- WEB前端开发最佳实践(3)
- Cocos2d-x 3.x 全平台新手开发配置教程
- 深度学习读书笔记之AE(自动编码AutoEncoder)
- CentOS下添加普通用户到sudo组,并且免密码登录
- Linux系统的文件系统详解
- 使用assert.h简介
- 线段树(segment tree)
- android Gradle 教程