洛谷P3958 乳酪

2021-10-02 21:30:22 字數 1533 閱讀 9498

題目描述

現有一塊**酪,它的高度為 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 (均不包含引號)。

輸入輸出樣例

輸入 #1 複製

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

輸出 #1 複製

yesno

yes這道題採用並查集演算法,介紹詳見收藏夾—並查集

#include

#include

#include

#include

#include

using

namespace std;

struct v

;int k1=

0,k2=0;

int be[

1001]=

,en[

1001]=

;int t=

0,n=0;

long

long r=

0,h=0;

//開long long 型別才夠用

v vertex[

1001]=

;int

find

(int aim)

return aim;

//返回掌門序號

}int

main()

}}bool flag=0;

for(

int i=

1;i<=k1;i++)}

if(flag)

break;}

if(!flag)

cout<<

"no"

<}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。現在,乳酪的下表面有...