BFS代码AC了,可还是想不明白
BFS代码如下
#include<bits/stdc++.h>\\懒人专用万能头无需解释
using namespace std;
struct node {\\坐标结构体
int x, y;
} q[30000];
bool s[200][200], p[200][200];\\用bool型变量存储地图,s是地图,p是标记数组
int ans, m, n;
char a;
int c[4][2] = {0, 1, 1, 0, -1, 0, 0, -1};\\方向数组
void bfs(int x, int y) {\\标准BFS模板
ans++;
int head = 0, tail = 1, X, Y;
q[1].x = x;
q[1].y = y;
while (head < tail) {
head++;
X = q[head].x;
Y = q[head].y;
p[X][Y] = 1;
for (int i = 0; i < 4; i++) {
int xx = X + c[i][0];
int yy = Y + c[i][1];
if (s[xx][yy] && (!p[xx][yy])) {
q[++tail].x = xx;
q[tail].y = yy;
}
}
}
}
int main() {
cin>>m>>n;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
cin>>a;
s[i][j] = (a != '0');
}
}
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if (s[i][j] && (!p[i][j])) {
bfs(i, j);
}
}
}
printf("%d", ans);
return 0;
}
这里不理解代码第34行
cin>>a;
为什么不能用
scanf("%c",&a);
本蒟蒻刚学了BFS,还不怎么会写,各位神犇见谅