BFS入门题目,样例过了但代码目前是WA,不知为何,请大家指点。
知道错误以后我会把正确代码贴上来。
#include <iostream>
#include<cstring>
#include<queue>
#include<cstdio>
using namespace std;
const int MAXN=1001;
int canvas[MAXN][MAXN],point_x,point_y,r,row,col,n,color;
struct direct{
int dx;
int dy;
}dir[8]={{0,1},{0,-1},{1,0},{-1,0},{1,1},{1,-1},{-1,-1},{-1,1}};
struct node{
int xf;
int yf;
};
queue<node>q;
int check(int x,int y)
{
if(x<0||x>=row||y<0||y>=col)
return 1;
return 0;
}
void bfs()
{
node start;
start.xf=point_x;
start.yf=point_y;
q.push(start);
while(!q.empty()){
node front=q.front();
q.pop();
if((front.xf-point_x)*(front.xf-point_x)+(front.yf-point_y)*(front.yf-point_y)>r*r)
return;
canvas[front.xf][front.yf]=color;
for(int i=0;i<8;i++)
{
int nextx=front.xf+dir[i].dx;
int nexty=front.yf+dir[i].dy;
if(check(nextx,nexty))
continue;
node v;
v.xf=nextx;
v.yf=nexty;
q.push(v);
}
}
}
int main()
{
scanf("%d%d%d",&row,&col,&n);
while(n--){
while(!q.empty())
q.pop();
scanf("%d%d%d%d",&point_x,&point_y,&r,&color);
bfs();
}
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
printf("%d",canvas[i][j]);
printf("\n");
}
return 0;
}
//QAQ