稍微改了一下
```cpp
#include<iostream>
#include<cstring>
using namespace std;
int n,m,cnt,ans,maxx = -(1<<30),ans_x,ans_y;
char ans_w;
bool mp[155][155][5];
bool vis[155][155];
int k[155][155];
int K[1255];
int xx[] = {-1,1,0,0};
int yy[] = {0,0,-1,1};
inline int read() {
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int sum(int x,int y){
// cout << x << ' ' << y << endl;
k[x][y] = cnt;
int ret = 0;
vis[x][y] = 1;
ret ++;
if(!mp[x][y][0] && !vis[x][y-1] && x>=1 && x<=n && y-1>=1 && y-1<=m) ret += sum(x,y-1);
if(!mp[x][y][1] && !vis[x-1][y] && x-1>=1 && x-1<=n && y>=1 && y<=m) ret += sum(x-1,y);
if(!mp[x][y][2] && !vis[x][y+1] && x>=1 && x<=n && y+1>=1 && y+1<=m) ret += sum(x,y+1);
if(!mp[x][y][3] && !vis[x+1][y] && x+1>=1 && x+1<=n && y>=1 && y<=m) ret += sum(x+1,y);
return ret;
}
//void dfs(int x,int y){
// if(mp[x][y][0] == 1 && y != 1)
//}
int main(){
cin >> m >> n;
for(int i=1 ; i<=n ; i++){
for(int j=1,x ; j<=m ; j++){
cin >> x;
if(x&1) mp[i][j][0] = 1;
if(x&2) mp[i][j][1] = 1;
if(x&4) mp[i][j][2] = 1;
if(x&8) mp[i][j][3] = 1;
}
}
memset(vis,0,sizeof vis);
for(int i=1 ; i<=n ; i++){
for(int j=1 ; j<=m ; j++){
if(!vis[i][j]) K[++cnt] = sum(i,j);
maxx = max(maxx,K[cnt]);
}
}
cout << cnt << endl << maxx << endl;
for(int j=1 ; j<=m ; j++)
for(int i=n ; i>=1 ; i--){
if(i != 1 && mp[i][j][1] == 1 && k[i][j] != k[i-1][j]){
if(ans < K[k[i][j]] + K[k[i-1][j]]){
ans = K[k[i][j]] + K[k[i-1][j]];
ans_x = i;
ans_y = j;
ans_w = 'N';
}
}
if(j != m && mp[i][j][2] == 1 && k[i][j] != k[i][j+1]){
if(ans < K[k[i][j]] + K[k[i][j+1]]){
ans = K[k[i][j]] + K[k[i][j+1]];
ans_x = i;
ans_y = j;
ans_w = 'E';
}
}
}
cout << ans << endl << ans_x << ' ' << ans_y << ' ' << ans_w;
return 0;
}
```
by 黄舀啊 @ 2022-09-06 19:04:40
[记录](https://www.luogu.com.cn/record/86008703)
by 黄舀啊 @ 2022-09-06 19:05:59
加了吸氧A掉了,但为什么换了一下循环就A了
```cpp
for(int i=n ; i>=1 ; i--)
for(int j=1 ; j<=m ; j++){
if(i != 1 && mp[i][j][1] == 1 && k[i][j] != k[i-1][j]){
if(ans < K[k[i][j]] + K[k[i-1][j]]){
ans = K[k[i][j]] + K[k[i-1][j]];
ans_x = i;
ans_y = j;
ans_w = 'N';
}
}
if(j != m && mp[i][j][2] == 1 && k[i][j] != k[i][j+1]){
if(ans < K[k[i][j]] + K[k[i][j+1]]){
ans = K[k[i][j]] + K[k[i][j+1]];
ans_x = i;
ans_y = j;
ans_w = 'E';
}
}
}
```
换成了
```cpp
for(int j=1 ; j<=m ; j++)
for(int i=n ; i>=1 ; i--){
if(i != 1 && mp[i][j][1] == 1 && k[i][j] != k[i-1][j]){
if(ans < K[k[i][j]] + K[k[i-1][j]]){
ans = K[k[i][j]] + K[k[i-1][j]];
ans_x = i;
ans_y = j;
ans_w = 'N';
}
}
if(j != m && mp[i][j][2] == 1 && k[i][j] != k[i][j+1]){
if(ans < K[k[i][j]] + K[k[i][j+1]]){
ans = K[k[i][j]] + K[k[i][j+1]];
ans_x = i;
ans_y = j;
ans_w = 'E';
}
}
}
```
by 黄舀啊 @ 2022-09-06 19:08:52
@[黄舀啊](/user/496009) 简单实验了一下,仿佛和循环顺序没有关系?吸氧都能 A?
不开 O2 会 RE 的原因可能是 48 ~ 53 行的 `++cnt` 加爆了直接越界,产生 UB
by Poncirus @ 2022-09-06 19:42:18
@[HYp0rItE62](/user/245052) 谢谢dalao
by 黄舀啊 @ 2022-09-07 18:13:02
蒟蒻请教一下,什么叫做吸氧
by Wallacewwz @ 2023-09-24 21:31:22