神奇的RE
查看原帖
神奇的RE
216011
ForeverYurippe楼主2020/11/21 11:32

RT,不知道哪里锅了

#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
string a[1005];
int ma[1005][1005];
int x[1005],y[1005],p;
map<char,pair<int,int> > v;
void dfs(int X,int Y){
	if(X < 1 || Y < 1 || X > n || Y > m || ma[X][Y] == 1)return;
    if(ma[X + v[a[X][Y]].first][Y + v[a[X][Y]].second] == 0)return;
    if(ma[X][Y] == 0)ans++;
    ma[X][Y] = 1;
    dfs(X + 1,Y);
	dfs(X,Y + 1);
	dfs(X - 1,Y);
	dfs(X,Y - 1);
}
int main(){
    v['u'] = make_pair(-1,0);//上
    v['d'] = make_pair(1,0);//下
    v['l'] = make_pair(0,-1);//左
    v['r'] = make_pair(0,1);//右
    cin>>n>>m;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            cin>>a[i][j];
            if(a[i][j] == 'o')x[++p] = i,y[p] = j;
        }
    }
    ans += p;
	for(int i = 1; i <= p; i++){
		int xx = x[i],yy = y[i];
        ma[xx][yy] = 1;
		dfs(xx + 1,yy);
		dfs(xx,yy + 1);
		dfs(xx - 1,yy);
		dfs(xx,yy - 1);
	}
    cout<<ans;
    return 0;
}
2020/11/21 11:32
加载中...