並查集 洛谷P3958 乳酪

2021-08-28 02:29:26 字數 792 閱讀 3192

給定一些洞,求能否從上面走到下面

若兩個洞相交或相切,則用並查集將它們合併在一起,將頂部和底部當作乙個無窮扁的圓,判斷頂部和底部是否相連即可

#include

#include

#define r(i,a,b) for(register int i=a;i<=b;i++)

using

namespace

std;int f[1002],n,h,r,t;

long

long x[1002],y[1002],z[1002];

inline

int find(register

int x)

inline

void merge(register

int x,register

int y)

inline

long

long read()

inline

long

long power(register

long

long x)

signed main()

r(i,1,n-1) r(j,i+1,n)

if(sqrt(power(x[i]-x[j])+power(y[i]-y[j])+power(z[i]-z[j]))<=r*2) merge(i,j);//判斷是否連線

if(find(0)==find(n+1)) printf("yes\n");else

printf("no\n");//輸出

}}

洛谷P3958 乳酪 並查集

兩個空洞可互達當且僅當兩個空洞相切,即球心距離小於等於球的直徑。一一枚舉兩個可互達的空洞,並用並查集連起來即可。code include include using namespace std const int maxn 1000 4 int p maxn int find int x struc...

洛谷P3958 乳酪 並查集

兩個空洞可互達當且僅當兩個空洞相切,即球心距離小於等於球的直徑。一一枚舉兩個可互達的空洞,並用並查集連起來即可。code include include using namespace std const int maxn 1000 4 int p maxn int find int x struc...

題解 洛谷P3958 乳酪(並查集 搜尋)

想了半天寫了乙個搜尋,不過裡面用到了並查集的思想。結果很顯然我tle了6個點。看了題解之後發現自己傻了。所以就把搜尋去掉,單用並查集解決不就完事兒了qaq include include include include include include define ll long long usin...