題目描述
farmer john 最近正在修建乙個巨大的包含 n×n 個房間的牲口棚,這些房間從(1,1)標號到(n,n)。由於某些原因而害怕黑暗,貝茜這頭奶牛想要盡可能地開更多房間的燈。貝茜從房間(1,1)出發,這個房間是唯一乙個一開始就亮著的房間。在一些房間中,她會找到一些電燈開關,這些開關她可以用來切換其他房間的燈的狀態。比如,在(1,1)這個房間中可能存在乙個電燈開關來控制(1,2)房間中的電燈。貝茜只能進電燈開著的房間,並且貝茜只能從房間(x,y)走到四個方向的房間(x-1,y),(x+1,y),(x,y-1)和(x,y+1)(如果在邊界的話,那可能會更少)。請幫忙統計貝茜最多可以照亮多少房間。
輸入
第一行兩個整數 n,m(2<=n<=100,1<=m<=20,000)
下面 m 行,每行用四個整數 x,y,a,b 來表示房間(x,y)存在著可以控制房間(a,b)的燈的開關。乙個房間可能有多個開關,乙個房間的燈的開關可能存在於多個房間中。
輸出
一行乙個整數,表示貝茜最多可以照亮的房間數
樣例輸入
361
1122
1221
1132
3311
3121
321
樣例輸出
5
提示
在這個樣例中,貝茜可以使用房間(1,1)內的開關開啟房間(1,2)和(1,3)的燈。然後她可以走到(1,3),使用(1,3)內的開關開啟(2,1)的燈,接著可以通過(2,1)開啟(2,2)的燈,然而(2,3)是黑暗的,她無法去開啟(2,3)房間裡的開關,因此,她最多只能開啟 5個房間裡的燈。
這道題我們可以用寬搜
對於怎麼存邊,我們可以用二維的鄰接表來實現,其實是跟一維
差不多的,用乙個陣列來存橫向的,乙個來存豎向的(xx,yy);
#include
#include
using
namespace std;
const
int dx[5]
=;//四個方向
const
int dy[5]
=;int fx[
20010
],fy[
20010
],tx[
20010
],ty[
20010];
struct node
a[20010];
int head[
110]
[110
],t=
0,qx[
20010
],qy[
20010];
int n,m;
bool dis[
110]
[110
],f[
110]
[110];
void
add(
int x,
int y,
int x1,
int y1)
//鄰接表
void
bfs(
)//跟不同的寬搜一樣}}
}while
(h<=t);}
intmain()
bfs();
int ans=0;
for(
int i=
1;i<=n;i++
)//判斷房間是否開的燈
for(
int j=
1;j<=n;j++)if
(dis[i]
[j]==
1) ans++
; cout
}
沒有方向,就像黑夜裡不開燈的房間
今天,我們來聊聊方向的問題。沒有方向,就像黑夜裡不開燈的房間。方向什麼方向問題呢?最近有很多學員,經常會說自己的生活 工作好像沒有了方向。具體是什麼樣的表現呢?比如說,你在生活上沒有了方向,就感覺自己的生活沒有希望,不知道怎麼才能變得更好。好像自己沒有什麼目標,也改變不了什麼。很害怕未來這麼一成不變...
threejs燈光light引數
1.環境光ambientlight 環境光會均勻的照亮場景中的所有物體。var light new three.ambientlight 0x404040 1 白光,燈光強度為1 2.平行光directionallight 模擬遠處像太陽一樣的光源 var light new three.direc...
77 開燈問題
時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 有n盞燈,編號為1 n,第1個人把所有燈開啟,第2個人按下所有編號為2 的倍數的開關 這些燈將被關掉 第3 個人按下所有編號為3的倍數的開關 其中關掉的燈將被開啟,開著的燈將被關閉 依此類推。一共有k個人,問最後有哪些燈開著?輸...