시간 제한 :
1000 MS 메모리 제한 : 26만2천1백44킬로바이트 자세한 제한
1 #INCLUDE <iostream> 2 #INCLUDE <STDIO.H> 3 #INCLUDE < 문자열 .H> 4 이용한 스페이스 성병; 5 INT XX [ 4 ] = { 0 , 0 , - 1 , 1 }; 6 의 INT 전년 [ 4 ] = { 1 - 1 , 0 , 0 }; 7 int로 A [ 10 ] [ 10 ] 힘 [ 10 ] [ 10 ], E [ 6 ] 8 INT의 N, 플래그, D; (9) 보이드 색상 ( INT (X), INT의 Y, INT COL) (10) { 도 11 의 VI [X] [Y] = 1 ; (12) 에 대한이 ( int로 I = 0 ; i가 < 4 ; i가 ++ ) 13 { 14 INT NX = XX X + [I], NY = Y + YY [I]; 15 의 경우 (NX < 1 || NX> N NY || < 1 || NY> N || 힘 [NX] [뉴욕] == 1 ) 16 계속 ; 17 힘 [NX] [뉴욕] = 2 ; 18 의 경우 (a [NX] [뉴욕] == COL) (19) 색상 (NX, NY, COL); 20 } 21 } 22 INT EVA ( INT S) 23 { 24 INT에서 CNT = 0 ; 25 memset 함수 (즉, 0 , sizeof 연산자 (E)); (26) 에 대한이 ( int로 I = 1 ; i가 N = <; I ++ ) 27 대 ( INT J = 1 ; J <= N; J ++ ) (28) 의 경우 ! (힘 [I] [J] = 1 ! && E [A [I [J]) 29 E [A [I] [J]] = 1 , CNT ++ ; 30 창 (CNT); 31 } 32 부울 판사 ( INT COL) 33 { 34 INT의 TMP = 0 ; (35) 에 대한이 ( int로 I = 1 ; i가 N = <; I ++ ) 36 대 ( INT J = 1 ; J <= N; J ++ ) (37) 의 경우 (a [I] [J] == COL && 힘 [I] [J] = = 2 ) 38 { 39 TMP ++ ; (40) 컬러 (I, J, COL); 41 } 42 창 (TMP> 0 ); 43 } 44 보이드 검색 ( INT의 S) 45 { 46 INT의 TMP = EVA (S) t [ 10 ] [ 10 ]; (47) 의 경우 (TMP의 == 0 ) 48 { 49 플래그 = 1 ; 50 창 ; 51 } 다른 경우 (TMP + S> D) 52 리턴 ; (53) 에 대한( int로 I = 0 ] = 1은 < 5 ; 내가 ++ ) 54 { 55 를 memcpy (t, 힘, 는 sizeof (t))를; 56 의 경우 (판단 (I)) 57 검색 (들 + 1 ); 58 개 를 memcpy (힘, t, 는 sizeof (힘)); (59) 만약 (플래그) 60 리턴 ; 61 } 62 } 63 INT 의 main () 64 { 65 동안 (는 scanf ( " %의 D ' , N)! = EOF && N) 66 { 67 플래그 = 0 ; memset 함수 (힘, 0 , 는 sizeof (힘)); (68) 에 대한이 ( int로 I = 1 ; i가 N = <I ++ ) 69 대 ( INT J = 1 J ++; J <= N ) 70 CIN >> A [I] [J] (71) 컬러 ( 1 , 1 , A [ 1 ] [ 1 ]); 72 대 (d = 0 , D> = 0 , D ++ ) 73 { 74 검색 ( 0 ); 75 의 경우 (플래그) 76 { 77 COUT << D << ENDL; 78 체류 ; 79 } 80 } 81 } 82 반환 0 ; 83 }