90分题目,求助大佬,本蒟蒻求教,本题用了BFS

P1596 [USACO10OCT] Lake Counting S

请忽略在sum前面的那两个for循环
by zhz小蒟蒻 @ 2018-07-16 18:11:07


有一个小地方发错了 ``` #include <iostream> #include <cstdio> using namespace std; struct node { int x; //横坐标 int y; //纵坐标 }; int main() { struct node que[10001]={0}; char a[100][100]; int book[100][100]; int v1[8]={0,0,-1,-1,-1,1,1,1}; int v2[8]={1,-1,-1,0,1,-1,0,1}; int i,j,k,n,m,sum=0; int head,tail,tx,ty; head=0;tail=1; cin>>n>>m; for(i=0;i<n;i++) for(j=0;j<m;j++) cin>>a[i][j]; for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(a[i][j]=='W' && book[i][j]==0) { que[head].x=i; que[head].y=j; book[i][j]=1; while(head<tail) { for(k=0;k<8;k++) { tx=que[head].x+v1[k]; ty=que[head].y+v2[k]; if(tx<0 || tx>=n || ty<0 || ty>=n) continue; if(book[tx][ty]==0 && a[tx][ty]=='W') { book[tx][ty]=sum+1; que[tail].x=tx; que[tail].y=ty; tail++; } } head++; } sum++; head=tail; tail++; } } } cout<<sum; return 0; } ```
by zhz小蒟蒻 @ 2018-07-16 21:58:08


请看数据范围~~我也被卡了一下~~
by 谜之soul_北冥X @ 2020-09-26 00:16:45


|