想了半天寫了乙個搜尋,不過裡面用到了並查集的思想。。。結果很顯然我tle了6個點。
看了題解之後發現自己傻了。。所以就把搜尋去掉,單用並查集解決不就完事兒了qaq
#include#include#include#include#include#include#define ll long long
using namespace std;
const int maxn=10100;
int t;
int n,tot,tot1;
int fa[maxn];
ll h,r;
struct node
a[maxn];
node start[maxn],end[maxn];
bool b[maxn];
long double dis(int i,int j)
int find(int x)
void merge(int x,int y)
}int main()
for(int i=1;i<=n;i++)
for(int i=1;i<=n;i++)
}} tot=0,tot1=0;
for(int i=1;i<=n;i++)
}for(int i=1;i<=n;i++)
}bool flag3=false;
for(int i=1;i<=tot;i++)
}if(flag3==true) break;
} if(flag3==true) printf("yes\n");
else printf("no\n");
} fclose(stdin);
fclose(stdout);
return 0;
}
洛谷P3958 乳酪 並查集
兩個空洞可互達當且僅當兩個空洞相切,即球心距離小於等於球的直徑。一一枚舉兩個可互達的空洞,並用並查集連起來即可。code include include using namespace std const int maxn 1000 4 int p maxn int find int x struc...
並查集 洛谷P3958 乳酪
給定一些洞,求能否從上面走到下面 若兩個洞相交或相切,則用並查集將它們合併在一起,將頂部和底部當作乙個無窮扁的圓,判斷頂部和底部是否相連即可 include include define r i,a,b for register int i a i b i using namespace std i...
洛谷P3958 乳酪 並查集
兩個空洞可互達當且僅當兩個空洞相切,即球心距離小於等於球的直徑。一一枚舉兩個可互達的空洞,並用並查集連起來即可。code include include using namespace std const int maxn 1000 4 int p maxn int find int x struc...