給定一些洞,求能否從上面走到下面
若兩個洞相交或相切,則用並查集將它們合併在一起,將頂部和底部當作乙個無窮扁的圓,判斷頂部和底部是否相連即可
#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...