求助!在线等
查看原帖
求助!在线等
1374349
wangkaiwei楼主2024/12/11 21:35
#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[3][5000005],v[3][5000005],ans,n;
int dx[5]={-1,1,0,0},dy[5]={0,0,-1,1};
bool isval(int x,int y){
	if(x>=1&&x<=2&&y>=1&&y<=n) return 1;
	return 0;
}
void dfs(int x,int y){
	v[x][y]=0;
	for(int i=0;i<4;i++){
		int xx=x+dx[i],yy=y+dy[i];
		if(isval(xx,yy)&&a[xx][yy]==0&&v[xx][yy]==1){
			dfs(xx,yy);
		}
	}
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	int k=0;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[1][i];
		if(a[1][i]==0) v[1][i]=1;
	}
	for(int i=1;i<=n;i++){
		cin>>a[2][i];
		if(a[2][i]==0) v[2][i]=1;
	}
	for(int i=2;i<n;i++){
		if(a[1][i]==0&&a[2][i]==0) k++;
	}
	for(int i=1;i<=2;i++){
		for(int j=1;j<=n;j++){
			if(v[i][j]==1){
				dfs(i,j);
				ans++;
			}
		}
	}
	cout<<ans+k+1;
	return 0;
} 
2024/12/11 21:35
加载中...