IPUOJ10705 最大連通塊 dfs

2022-05-10 07:42:11 字數 1860 閱讀 4941

(查錯有了收穫qwq開心)

給出乙個 n xm

的 01 矩陣,求其中最大的乙個全為1的連通塊。

其中連通按四連通計算,即相鄰兩個格仔都是1算連通,但斜著的兩個格仔不算連通。

從標準輸入讀入資料。

輸入的第一行包含乙個正整數 t ,表示資料的組數。保證 t = 5 。

對於每個部分,第一行包含兩個正整數 n 和 m ,保證 1 \le n,m \le 1000 。

接下來 n 行,每行為乙個長度為 m 的字串,表示每個格仔的情況。為0表示格仔為白色,為1表示格仔為黑色。保證至少有乙個黑色的格仔,保證不會出現其他字元。

輸出到標準輸出。

輸出 t 行,每行乙個整數,表示最大的全為1的連通塊。

5

5 510011

00110

01010

11110

11010

5 500000

00000

00000

00000

00100

5 501100

10011

10110

10101

10100

5 500101

10111

10001

01011

11011

5 501110

01101

11000

00110

10010

對於測試點 1 ,保證 n = 1, m = 10 。

對於測試點 2 ,保證 n = 1, m = 1000 。

對於測試點 3 ,保證 n = 4, m = 4 。

對於測試點 4 ,保證 n = 5, m = 6 。

對於測試點 5 ,保證 n = 1000, m = 1000 。

//40分**(只有一行的)

#includeusing

namespace

std;

int maxn[25];//

當前最長和最終最長

intn,nn,mm;

char aa[1005

];int

main()

else

if(aa[j]=='

0')now=1

; }

} i++;

}//這是迴圈結束的那個後括號=.=

for(int i=1;i<=n;i++)coutreturn0;

}

//100分**

#include #include

using

namespace

std;

intt, n, m, ans, sum;

char map[6][1005][1005

];bool searched[1005][1005

];int dx[4] = , dy[4] = , tx, ty;

void search(int z, int x, int

y) }

}int

main()

for (int i = 1; i <= 5; i++)

cout

<< ans

; ans = 0

; memset(searched,

0, sizeof

(searched));

}return0;

}

OpenCV計算連通區域數目與最大連通區域並標示出

cpp view plain copy print?include include include pragma comment lib,cv.lib pragma comment lib,cxcore.lib pragma comment lib,highgui.lib intmain intar...

OpenCV計算連通區域數目與最大連通區域並標示出

include include include pragma comment lib,cv.lib pragma comment lib,cxcore.lib pragma comment lib,highgui.lib intmain intargc,char argv cvrect arect ...

OpenCV計算連通區域數目與最大連通區域並標示出

include include include pragma comment lib,cv.lib pragma comment lib,cxcore.lib pragma comment lib,highgui.lib intmain int argc,char ar cvrect arect c...