劣質的草 (連通分量)

2021-07-14 23:08:48 字數 1345 閱讀 3925

【問題描述】

貝茜像其它奶牛一樣正在吃草,她正在思考她所在的地方。她注意到她只得到了乙個平於海平面的廣泛大片牧場。只有海拔1公尺或者更高更硬的草不那麼美味。草隨著海拔的增加越發難吃。 繼續咀嚼,她意識到,這沒有食慾的食物長成兩側的丘陵,形成了青翠美味豐富草地海洋中的一系列劣質草小島 。貝茜穿上她的實驗服,決心測定她的牧場有多少劣草小島。她畫出一張畫有被分成r (1 < r <= 1,000) 行、c (1 < c<= 1,000)列的1*1小格仔的地圖。她為每個小格仔測量了海拔高度,並四捨五入到非負整數。她飢餓地把所有美味草標的海拔標記成0。

她著手統計小島。任何水平、垂直、斜向相鄰的兩個有劣草的格仔將被認為在同乙個島中。在每一張她提供的地圖中有多少劣草島嶼呢?

【輸入格式】

第1行: 兩個用空格隔開的整數: r 和 c ,接下來的r行,第 i+1 用c個看空格隔開的整數表示地圖中的i行。

【輸出格式】

乙個代表島嶼數的整數。

【輸入輸出樣例】

badgras.in

8 7

4 3 2 2 1 0 1

3 3 3 2 1 0 1

2 2 2 2 1 0 0

2 1 1 1 1 0 0

1 1 0 0 0 1 0

0 0 0 1 1 1 0

0 1 2 2 1 1 0

0 1 1 1 2 1 0

badgras.out

2 【資料範圍】

1 < r <= 1,000

1 < c<= 1,000

就是單純的八連塊dfs或bfs求連通分量,比較簡單。

#include

#include

#include

#include

using

namespace

std;

const

int maxn=1002;

int r,c,belong[maxn][maxn],sz[maxn*maxn],mat[maxn][maxn];

int dx=;

int dy=;

struct data

;void bfs(int x,int y,int cc)

); while(!a.empty()));}

}}int main()

int cc=0;

memset(belong,0,sizeof(belong));

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

for(int j=1;j<=c;j++)

printf("%d",cc);

return

0;}

BFS 連通分量 求連通分量

題目描述 求乙個圖的連通分量 input n 頂點數 100 邊 以0 0作為結束標誌 output 連通分量 強連通圖的連通分量為其本身。如果為非連通圖,則連通分量為該圖的最大連通子圖。分析 建乙個100 100的布林矩陣,b x,y true表示x與y連通。同時還要記錄該點是否被遍歷過 然後遍歷...

點連通分量 邊連通分量 割點和橋 強連通分量

老是搞不清他們的關係,不知道該用那份 今天理了一下,整理一下模板 點連通分量 可以求出點連通分量包含哪些點,那個點屬於那個連通分量 struct edge int pre maxn iscut maxn bccno maxn dfs clock,bcc cnt vectorg maxn bcc ma...

強連通分量 tarjan求強連通分量

雙dfs方法就是正dfs掃一遍,然後將邊反向dfs掃一遍。挑戰程式設計 上有說明。雙dfs 1 include 2 include 3 include 4 include 5 6using namespace std 7const int maxn 1e4 5 8 vector g maxn 圖的鄰...