蒟蒻求调
  • 板块P1141 01迷宫
  • 楼主tysgk
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/1/19 14:40
  • 上次更新2023/10/24 03:37:07
查看原帖
蒟蒻求调
798860
tysgk楼主2023/1/19 14:40
#include <bits/stdc++.h>
using namespace std ;
char Map[ 1050 ][ 1050 ] ;
int vis[ 1050 ][ 1050 ] ;
int n , m , ans ;
int flag ;
int sx , sy ;
int dx[ 4 ] = { 0 , 0 , 1 , -1 } ;
int dy[ 4 ] = { 1 , -1 , 0 , 0 } ;
int pd ( int a , int b ) {
	int sum = 0 ;
	if ( Map[ a ][ b ] == '0' ) {
		if ( Map[ a + 1 ][ b ] == '1' ) sum++ ;
		if ( Map[ a ][ b + 1 ] == '1' ) sum++ ;
		if ( Map[ a ][ b - 1 ] == '1' ) sum++ ;
		if ( Map[ a - 1 ][ b ] == '1' ) sum++ ;
		if ( sum == 0 ) return false ;
		else return true ;
	}
	else if ( Map[ a ][ b ] == '1' ) {
		if ( Map[ a + 1 ][ b ] == '0' ) sum++ ;
		if ( Map[ a ][ b + 1 ] == '0' ) sum++ ;
		if ( Map[ a - 1 ][ b ] == '0' ) sum++ ;
		if ( Map[ a ][ b - 1 ] == '0' ) sum++ ;
		if ( sum == 0 ) return false ;
		else return true ;
	}
}
void dfs ( int x , int y ) {
	if ( pd ( x , y ) == false && flag == 0 ) {
		cout << ans << endl ;
		flag = 1 ;
		return ;
	}
	for ( int i = 0 ; i < 4 ; i++ ) {
		int newx = x + dx[ i ] ;
		int newy = y + dy[ i ] ;
		if ( Map[ newx - 1 ][ newy - 1 ] == 0 ) {
			if ( 1 <= newx && newx <= n && 1 <= newy && newy <= n && Map[ newx ][ newy ] == '1' && vis[ newx ][ newy ] == 0 ) {
				vis[ newx ][ newy ] = 1 ;
				ans++ ;
				dfs ( newx , newy ) ;
				vis[ newx ][ newy ] = 0 ;
			}
		}
		else if ( Map[ newx - 1 ][ newy - 1 ] == 1 ) {
			if ( 1 <= newx && newx <= n && 1 <= newy && newy <= n && Map[ newx ][ newy ] == '0' && vis[ newx ][ newy ] == 0 ) {
				vis[ newx ][ newy ] = 1 ;
				ans++ ;
				dfs ( newx , newy ) ;
				vis[ newx ][ newy ] = 0 ;
			}
		}
	}
}
int main ( ) {
	memset ( Map , -1 , sizeof ( Map ) ) ;
	cin >> n >> m ;
	for ( int i = 1 ; i <= n ; i++ ) {
		for ( int k = 1 ; k <= n ; k++ ) {
			Map[ i ][ k ] = getchar( ) ;
		}
	}
	for ( int i = 1 ; i <= m ; i++ ) {
		scanf ( "%d%d" , &sx , &sy ) ;
		vis[ sx ][ sy ] = 1 ;
		flag = 0 ; ans = 1 ;
		dfs ( sx , sy ) ;
		vis[ sx ][ sy ] = 0 ;
	}
	return 0 ;
}
2023/1/19 14:40
加载中...