1 2 3 4 5 6 7
#############################
1 # | # | # | | #
#####—#####—#---#####—#
2 # # | # # # # #
#—#####—#####—#####—#
3 # | | # # # # #
#—#########—#####—#---#
4 # # | | | | # #
#############################
(圖 1)
| = no wall
方向:上北下南左西右東。
圖1是乙個城堡的地形圖。
請你編寫乙個程式,計算城堡一共有多少房間,最大的房間有多大。
城堡被分割成 m∗nm∗n個方格區域,每個方格區域可以有0~4面牆。
輸入格式
第一行包含兩個整數 mm 和 nn,分別表示城堡南北方向的長度和東西方向的長度。
接下來 mm 行,每行包含 nn 個整數,每個整數都表示平面圖對應位置的方塊的牆的特徵。
每個方塊中牆的特徵由數字 pp 來描述,我們用1表示西牆,2表示北牆,4表示東牆,8表示南牆,pp 為該方塊包含牆的數字之和。
例如,如果乙個方塊的 pp 為3,則 3 = 1 + 2,該方塊包含西牆和北牆。
城堡的內牆被計算兩次,方塊(1,1)的南牆同時也是方塊(2,1)的北牆。
輸入的資料保證城堡至少有兩個房間。
輸出格式
共兩行,第一行輸出房間總數,第二行輸出最大房間的面積(方塊數)。
資料範圍
1≤m,n≤501≤m,n≤50,
0≤p≤150≤p≤15
輸入樣例:
4 711 6 11 6 3 10 6
7 9 6 13 5 15 5
1 10 12 7 13 7 5
13 11 10 8 10 12 13
輸出樣例:59
#include
#include
#include
#include
using
namespace std;
#define x first
#define y second
typedef pair<
int,
int> pii;
const
int n=
55,m=n*n;
int n,m;
pii q[m]
;bool st[n]
[n];
int g[n]
[n];
intbfs
(int sx,
int sy)
,dy[4]
=;int hh=
0,tt=0;
q[0]=
; st[sx]
[sy]
=true
;while
(hh<=tt)
; st[a]
[b]=
true;}
}return area;
}int
main()
cout
}
1817 城堡問題
總時間限制 1000ms 記憶體限制 65536kb 描述1 2 3 4 5 6 7 1 2 3 4 圖 1 wall no wall no wall 圖1是乙個城堡的地形圖。請你編寫乙個程式,計算城堡一共有多少房間,最大的房間有多大。城堡被分割成m n m 50,n 50 個方塊,每個方塊可以有0...
35 城堡問題
如圖是乙個城堡的地形圖。請你編寫乙個程式,計算城堡一共有多少房間,最大的房間有多大。城堡被分割成 m n m 50,n 50 個方塊,每個方塊可以有 0 4 面牆。資料保證城堡四周都是牆 輸入 輸出 樣例輸入47 11 6 11 6 3 10 6 7 9 6 13 5 15 5 1 10 12 7 ...
城堡問題 Flood Fill
1 2 3 4 5 6 7 1 2 3 4 圖 1 wall no wall no wall 方向 上北下南左西右東。圖1是乙個城堡的地形圖。請你編寫乙個程式,計算城堡一共有多少房間,最大的房間有多大。城堡被分割成 m n個方格區域,每個方格區域可以有0 4面牆。注意 牆體厚度忽略不計。輸入格式 第...