洛谷 P3958 乳酪(DFS)

2021-10-06 02:48:50 字數 1668 閱讀 9629

現有一塊**酪,它的高度為 h,它的長度和寬度我們可以認為是無限大的,乳酪 中間有許多 半徑相同 的球形空洞。我們可以在這塊乳酪中建立空間座標系,在座標系中, 乳酪的下表面為z=0,乳酪的上表面為z = h。

現在,乳酪的下表面有乙隻小老鼠 jerry,它知道乳酪中所有空洞的球心所在的坐 標。如果兩個空洞相切或是相交,則 jerry 可以從其中乙個空洞跑到另乙個空洞,特別 地,如果乙個空洞與下表面相切或是相交,jerry 則可以從乳酪下表面跑進空洞;如果 乙個空洞與上表面相切或是相交,jerry 則可以從空洞跑到乳酪上表面。

位於乳酪下表面的 jerry 想知道,在 不破壞乳酪 的情況下,能否利用已有的空洞跑 到乳酪的上表面去?

每個輸入檔案包含多組資料。

的第一行,包含乙個正整數 t,代表該輸入檔案中所含的資料組數。

接下來是 t 組資料,每組資料的格式如下: 第一行包含三個正整數 n,h 和 r,兩個數之間以乙個空格分開,分別代表乳酪中空 洞的數量,乳酪的高度和空洞的半徑。

接下來的 n 行,每行包含三個整數 x,y,z,兩個數之間以乙個空格分開,表示空 洞球心座標為(x,y,z)。

t 行,分別對應 t 組資料的答案,如果在第 i 組資料中,jerry 能從下 表面跑到上表面,則輸出yes,如果不能,則輸出no (均不包含引號)。

32 4 1

0 0 1

0 0 3

2 5 1

0 0 1

0 0 4

2 5 2

0 0 2

2 0 4

yesno

yes之前牛客團隊賽見過沒寫,補一手

#include

using

namespace std;

#define pi acos(-1)

#define mod 1000000007

#define ll long long

#define ull unsigned long long

#define mem(a) memset(a,0,sizeof(a))

#define cio ios::sync_with_stdio(false);

struct node

q[1010];

bool

cmp(node a, node b)

int vis[

1010];

int n, h, r;

int flag;

double

dis(

double x1,

double y1,

double z1,

double x2,

double y2,

double z2)

void

dfs(

int p)

if(flag==1)

return

;//已到達上表面停止搜尋

vis[p]=1

;//標記已走過得空洞

for(

int i =

0; i < n; i++)}

}int

main()

else

if(flag)

break

;//可以到達上表面結束搜尋}if

(flag)

else

}return0;

}

洛谷P3958 乳酪

現有一塊 酪,它的高度為 h 它的長度和寬度我們可以認為是無限大的,乳酪 中間有許多 半徑相同 的球形空洞。我們可以在這塊乳酪中建立空間座標系,在座標系中,乳酪的下表面為 z 0 乳酪的上表面為 z h 現在,乳酪的下表面有乙隻小老鼠 jerry,它知道乳酪中所有空洞的球心所在的坐 標。如果兩個空洞...

洛谷P3958 乳酪

現有一塊 酪,它的高度為 hh,它的長度和寬度我們可以認為是無限大的,乳酪 中間有許多 半徑相同 的球形空洞。我們可以在這塊乳酪中建立空間座標系,在座標系中,乳酪的下表面為z 0z 0,乳酪的上表面為z hz h。現在,乳酪的下表面有乙隻小老鼠 jerry,它知道乳酪中所有空洞的球心所在的坐 標。如...

洛谷P3958 乳酪

原題位址 17年noip提高組的第二題,看到好多人都用搜尋,就拿並查集來水一篇題解 現有一塊 酪,它的高度為h,它的長度和寬度我們可以認為是無限大的,乳酪 中間有許多半徑相同的球形空洞。我們可以在這塊乳酪中建立空間座標系,在坐 標係中,乳酪的下表面為z 0,乳酪的上表面為z h。現在,乳酪的下表面有...