NYOJ 水池數目(BFS)

2021-09-26 15:36:18 字數 1102 閱讀 4933

題目描述

南陽理工學院校園裡有一些小河和一些湖泊,現在,我們把它們通一看成水池,假設有一張我們學校的某處的地圖,這個地圖上僅標識了此處是否是水池,現在,你的任務來了,請用計算機算出該地圖中共有幾個水池。

輸入第一行輸入乙個整數n,表示共有n組測試資料

每一組資料都是先輸入該地圖的行數m(0輸出

輸出該地圖中水池的個數。

要注意,每個水池的旁邊(上下左右四個位置)如果還是水池的話的話,它們可以看做是同乙個水池。

樣例輸入

2

3 41 0 0 0

0 0 1 1

1 1 1 0

5 51 1 1 1 0

0 0 1 0 1

0 0 0 0 0

1 1 1 0 0

0 0 1 1 1

樣例輸出

2

3

分析:這是一道很經典的連通塊問題,運用廣度優先搜尋,遇到1就將對應座標放入佇列,並將此點標記已搜尋,取出此點座標後對此點進行四個方向搜尋 ,遇到1後將對應座標放入佇列並重複之前的操作直到隊列為空。此時一整塊就算統計完了,數量+1.再去其他未標記的點進行搜尋。

相似問題 :(uva 572)oil deposits(bfs)

#include#include#include#includeusing namespace std;

const int m=1e2+5;

int map[m][m];

int vis[m][m],sum=0;

void bfs(int x,int y)

if(map[x1-1][y1]==1&&vis[x1-1][y1]==0)

if(map[x1][y1+1]==1&&vis[x1][y1+1]==0)

if(map[x1][y1-1]==1&&vis[x1][y1-1]==0)

}sum++;

}int main()

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

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

}printf("%d\n",sum);

}}

NYOJ 水池數目(DFS)

描述 校園裡有一些小河和一些湖泊,現在,我們把它們通一看成水池,假設有一張我們學校的某處的地圖,這個地圖上僅標識了此處是否是水池,現在,你的任務來了,請用計算機算出該地圖中共有幾個水池。輸入 第一行輸入乙個整數n,表示共有n組測試資料 每一組資料都是先輸入該地圖的行數m 0 m 100 與列數n 0...

NYOJ 27 水池數目

includeint n int map 101 101 int row,col int der 4 2 用二維陣列記錄四個方向 void count int x,int y int main for i 0 i row i for j 0 j col j 判斷不為0 的點 printf d n n...

nyoj27水池數目

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 南陽理工學院校園裡有一些小河和一些湖泊,現在,我們把它們通一看成水池,假設有一張我們學校的某處的地圖,這個地圖上僅標識了此處是否是水池,現在,你的任務來了,請用計算機算出該地圖中共有幾個水池。輸入第一行輸入乙個整數n,表示共有n...