第十一届蓝桥杯国赛B组C/C++ 扩散
作者:互联网
用队列广搜
#include<queue>
#include<stdio.h>
using namespace std;
int sum=0,e[10000][10000];
int net[4][2]={0,1,0,-1,1,0,-1,0};
struct paix
{
int x,y,s;
}head,tail;
void bfs()
{
queue<paix>q;
e[3000][3000]=e[5020][3011]=e[3011][3014]=e[5000][5000]=1;
tail.x=3000,tail.y=3000,tail.s=0;
q.push(tail);
tail.x=5020,tail.y=3011,tail.s=0;
q.push(tail);
tail.x=3011,tail.y=3014,tail.s=0;
q.push(tail);
tail.x=5000,tail.y=5000,tail.s=0;
q.push(tail);
while(!q.empty())
{
head=q.front();
q.pop();
for(int k=0;k<4;k++)
{
tail.x=head.x+net[k][0];
tail.y=head.y+net[k][1];
tail.s=head.s+1;
if(e[tail.x][tail.y]==0&&tail.s<=2020)
{
e[tail.x][tail.y]=1;
q.push(tail);
sum++;
}
}
}
return ;
}
int main()
{
bfs();
printf("%d",sum+4);
return 0;
}
答案:20312088
标签:5000,杯国赛,3011,C++,蓝桥,int,tail,3000,push 来源: https://blog.csdn.net/weixin_51732964/article/details/117374796