題目描述
現有一塊**酪,它的高度為 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。現在,乳酪的下表面有...