随便搞个循环就卡死了,,
```
2 2
rd
ul
```
by _Karasu_ @ 2023-03-22 20:50:48
顺便一提,这个 swap 实现是 UB
by _Karasu_ @ 2023-03-22 20:51:07
```cpp
#include <bits/stdc++.h>
using namespace std;
int p[1501][1501],c[1501][1501],qx[2000001],qy[2000001],ans,n,m;
char a[1501][1501];
int main(){
cin >> n >> m;
for(int i = 1;i <= n;++i){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(int i = 1;i <= n;++i){
for(int j = 1;j <= m;++j){
int x = i,y = j,cnt=0,add=0;
while(1){
c[x][y]++;
qx[++cnt]=x;
qy[cnt]=y;
if(a[x][y] == 'o'||p[x][y]==1){
add=1;
}
else if(x==0||y==0||x>n||y>m||p[x][y]==-1||c[x][y]>2){
add=-1;
}
if(add!=0){
for(int k=1;k<=cnt;k++){
p[qx[k]][qy[k]]=add;
c[qx[k]][qy[k]]+=add;
}
ans+=(add==1);
break;
}
if(a[x][y] == 'u'){
x -= 1;
}else if(a[x][y] == 'd'){
x += 1;
}else if(a[x][y] == 'l'){
y -= 1;
}else if(a[x][y] == 'r'){
y += 1;
}
}
}
}
cout << ans;
return 0;
}
```
by lucas_777 @ 2023-07-03 09:01:05