林業技術プログラミングコンテストDの中南大学第十最大の湖

リンク:https://ac.nowcoder.com/acm/contest/910/D
出典:牛オフネットワーク

ファーマージョンの農場では、最近の嵐であるため水の極度の恐怖の彼の牛のニュースが悪化しているという事実に殺到しました。

しかし、彼の保険会社は、彼だけにお金の合計を支払うために彼の農場「湖」の最大サイズに基づいて行われます。


ファームは、矩形グリッドとして表される、N(1≤N≤100)行M(1≤M≤100)カラムがあります。各格子グリッドは、いずれかの乾燥しています

いずれかの浸漬、しかし正確K(1≤K≤N×M)格子が浸漬されます。1が予想されるように、「湖が」持っています

中央グリッド、一方の縁(4つだけの方向ではなく斜めの意味)を共有することによって他のそれに接続されたグリッド。いずれか一方の側の中央グリッドまたは中央グリッドと共有

共用側に接続されたグリッドのサブグリッドは、湖の一部となります。
リンク: 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 <アルゴリズム>
 使用して 名前空間STDは、
 CONSTの INT MAXN 1E2 + = 2 ;
 BOOL VIS [MAXN] [MAXN]; // 行列は前記含有格子浸水かどうか、真のフラッディングされ
int型 SUM = 0 ;
 int型 ANS = 0 ;
 ボイド DFS(int型 X、int型 Y)を// 巻き込むゾーンの用紙サイズの中心見つけるVISに[X] [Y] 
{
     がiFを( 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]は = falseに一方(K-- 
    { 
        int型のX、Y、
        CIN >> X Y; 
        VIS [X] [Y]は = trueに
    } 
    のためのINT I = 1 ; I <= N - 、Iは++ のためにINT J = 1。 ; J <M、J ++ 
        { 
            SUM = 0 ;
             // 図小さなDFSをそれぞれ実際に少しを最適化することができる点が、私は何をする必要はありませんでした
            DFS(I、J); 
            ANS = MAX(SUM、ANS); // 取得した最大面積
        } 
   
    COUT << ANS << てendl; 
    システム(" 一時停止" );
     を返す 0 ; 
}

 

 

おすすめ

転載: www.cnblogs.com/tp25959/p/10938026.html