重回OI的第一篇博客

Posted sxy2004

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重回OI的第一篇博客相关的知识,希望对你有一定的参考价值。

太久没学OI了,
代码都不会写了,
先写一篇BFS练练手,
是我太菜了qwq

#include<cstdio>
#include<queue>
#include<iostream>
#include<cstring>
using namespace std;
struct node{
	int x,y,step;
};
queue<node>q;
char a[21][21];
int n,m,b[21][21],tx,ty;
int dx[4]={-1,1,0,0},dy[4]={0,0,-1,1};
node start,tmp;
void bfs(int xx,int yy){
	while(q.size()) q.pop();
	memset(b,0,sizeof(b));
	b[xx][yy]=1;
	start.x=xx; start.y=yy; start.step=0;
	q.push(start);
	while(q.size()){
		start=q.front();
		for(int i=0;i<4;i++){
			tx=start.x+dx[i]; ty=start.y+dy[i];
			if(a[tx][ty]==‘*‘){
				printf("%d
",start.step+1);
				return;
			}
			if(tx>0&&tx<=n&&ty>0&&ty<=m&&!b[tx][ty]&&a[tx][ty]==‘.‘){
				b[tx][ty]=1;
				tmp.x=tx; tmp.y=ty; tmp.step=start.step+1;
				q.push(tmp);
			}
		}
		q.pop();
	}
	printf("-1
");
}
int main(){
	int xx,yy;
	while(1){
		scanf("%d%d",&n,&m);
		if(n==0&&m==0) return 0;
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++){
				cin>>a[i][j];
				if(a[i][j]==‘@‘) xx=i,yy=j;
			}
		bfs(xx,yy);
	}
}

一道非常水的BFS(尽管我写了好久
好不容易又开始学OI了,
慢慢重新学叭qwq






以上是关于重回OI的第一篇博客的主要内容,如果未能解决你的问题,请参考以下文章

我的第一篇博客

我的第一篇博客

我的第一篇博客

我的第一篇博客(typescript学习笔记)

在博客园开通了博客, 以此纪念发的第一篇博文。

我的第一篇博客