房間開燈(light)

2021-10-03 20:41:42 字數 1997 閱讀 9578

題目描述

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個人,問最後有哪些燈開著?輸...