用bfs做的,没过样例QwQ

P1451 求细胞数量

数组从 $0$ 开始,为什么 $\le n$ 呢? 这不就有 $n+1$ 行了吗?
by Liyhzh_C202712 @ 2024-04-14 22:03:29


改了之后 `WA` 一个点……
by Liyhzh_C202712 @ 2024-04-14 22:04:26


不开 O2 就能过
by Liyhzh_C202712 @ 2024-04-14 22:07:08


@[lucy2012](/user/1252442)
by Liyhzh_C202712 @ 2024-04-14 22:10:06


@[lucy2012](/user/1252442) 其实简单的二维 dfs 就可以。
by wzj0829 @ 2024-04-14 22:11:10


@[Liyhzh_C202712](/user/1068500) 是哪里$<=0$了腻?QwQ
by lucy2012 @ 2024-04-15 20:19:16


@[wzj0829](/user/1028403) 用dfs做了一次,不过要用这个当bfs模板^w^|||
by lucy2012 @ 2024-04-15 20:21:01


@[lucy2012](/user/1252442) 6
by wzj0829 @ 2024-04-15 20:23:10


这样吗 ```cpp #include<bits/stdc++.h> using namespace std; int n, m, vis[110][110],sum=0; int d[4][2]={{ -1, 0},{ 0, -1},{ 1, 0},{ 0, 1}}; char ch[110][110]; struct node { int x, y; } q[110]; void bfs(int x,int y){ int head = 1,tail = 1; q[tail].x = x; q[tail].y = y; tail++; while(head < tail){ int x1 = q[head].x; int y1 = q[head].y; vis[x1][y1] = 1; for(int i = 0;i < 4; i++){ int nx = x1 + d[i][0]; int ny = y1 + d[i][1]; if(nx >= 0&&nx < n&& ny >= 0&& ny < m&& ch[nx][ny] != '0'&&!vis[nx][ny]){ q[tail].x = nx; q[tail].y = ny; tail++; vis[nx][ny]=1; } } head++; } } int main(){ cin>> n >> m; for(int i = 0; i < n; i++) scanf("%s", ch[i]); for(int i = 0; i < n; i++){ for(int j = 0;j < m; j++){ if(ch[i][j] != '0'&& !vis[i][j]){ sum++; bfs(i, j); } } } cout<< sum; return 0; } ```
by lucy2012 @ 2024-04-15 21:29:40


@[Liyhzh_C202712](/user/1068500) 谢谢啦,我再问问O2的问题
by lucy2012 @ 2024-04-15 21:31:58


| 下一页