임업 기술 프로그래밍 대회 D 열한번째 가장 큰 호수의 중앙 남부 대학교

링크 : https://ac.nowcoder.com/acm/contest/910/D
출처 : 가축 오프 네트워크

농부 존의 농장은 최근 폭풍 때문에 물 극단적 인 두려움의 자신의 소 소식이 악화 사실을 넘쳐난다.

그러나, 자신의 보험 회사는 단지 자신의 농장 "호수"그에게 돈의 합을 지불의 최대 크기를 기반으로합니다.


직사각형 그리드로 표현 농장, N (1≤N≤100) 행과 M (1≤M≤100) 열이있다. 각 격자 그리드는 어느 건조

어느 침수하지만, 정확히 K (1≤K≤N × M) 격자가 침수된다. 하나는 예상 된 바와 같이, "호수"는이

중앙 그리드, 하나의 에지 (단 네 방향이 아닌 대각 의미)을 공유함으로써, 다른 이들에 접속 된 그리드. 어느 한쪽의 중앙 그리드 또는 중앙 그리드와 공유

공유 측에 연결 그리드 하위 그리드는 호수의 일부가 될 것입니다.
링크 : https://ac.nowcoder.com/acm/contest/910/D
출처 : 가축 오프 네트워크

설명을 입력합니다 :

첫 번째 라인은 세 개의 정수 N 각각 M, K, N 행의 직사각형 그리드 M 열, K 침수 그리드를 포함한다. 

다음 K 열, 각 행은 두 정수 R, C.을 갖는다 이것은 격자의 행 R, 열 C. 잠긴 나타낸다

출력 설명 :

포함 된 출력 격자의 수는 최대 규모의 "호수"
예 1

기입

3 4 5 
3 2 
2 2 
3 1 
2 3 
1 1

수출

4 
qwq이 질문은 줄에 다음 호수 지구, 가장 큰 지역의 각 부분의 크기를 계산하는 아주 간단한 문제이며,
#INCLUDE <STDIO.H> 
#INCLUDE <iostream> 
#INCLUDE <stdlib.h> 
#INCLUDE <알고리즘>
 은 USING  공간 STD는,
 CONST의  INT MAXN는 1E2 + = 2 ;
 BOOL VIS [MAXN] MAXN]; // 행렬은 상기 함유 격자 침수 여부를 참 침수 
INT의 SUM = 0 ;
 INT ANS = 0 ;
 공극 DFS ( INT의 X, int로 Y)를 // [X] [Y]는 침몰 영역의 용지 사이즈의 중심 찾을 힘에 
{
     만약에이 ( VIS [X] [Y]) // 표지되지 않은 격자를 찾을 
    { 
        VIS [X] [Y] =false로 ; // 에서도 장소 마커 
        ++ SUM ; 
        DFS (X + 1. ;, Y) 
        DFS (X - 1. , Y); 
        DFS (X, Y + . 1 ); 
        DFS (X, Y - 1. ); 
    } 
    반환 ; 
} 
INT 의 main () 
{ 
    INT N-, K, m, 
    CIN >> m >> N- K 단계;
     //이 행렬을 초기화 
    를위한 ( INT I = . 1 I가 ++; I <= N- )
         에 대해 ( INT= J . 1 ; J <m, J가 ++ ) 
            VIS [I]를 [J]가 = 거짓 ;
     그동안 (K-- ) 
    { 
        INT의 X, Y, 
        CIN >> X Y] 
        VIS [X] [Y]가 = ; 
    } 
     ( INT I = 1. ; I <= N-; I는 ++ )
          ( INT J = 1. , J <m, J ++ ) 
        { 
            SUM = 0 ;
             // 도 작게 DFS 각 실제로 약간 최적화 지점 있지만 내가 할 필요가 없었어요
            DFS (I, J); 
            ANS = 최대 (SUM, ANS); // 얻을 최대 면적 
        } 
   
    COUT << ANS << ENDL; 
    시스템 ( " 일시 - 정지 " );
     반환  0 ; 
}

 

 

추천

출처www.cnblogs.com/tp25959/p/10938026.html