Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:实践证明写递归是可以过的(907MS)In Reply To:Re:注意一下这题有个很奇葩的坑点... Posted by:17310320725 at 2018-07-27 16:02:26 # include<map> # include<set> # include<list> # include<stack> # include<queue> # include<bitset> # include<vector> # include<string> # include<fstream> # include<istream> # include<ostream> # include<sstream> # include<iostream> # include<math.h> # include<time.h> # include<ctype.h> # include<stdio.h> # include<stdlib.h> # include<string.h> # include<algorithm> # include<functional> using namespace std; const int maxx=1005; int n,m; int fa[maxx]; int k,l; struct node { int x,y; bool num; } cool[maxx]; void init() { for(int i=0; i<=n; i++) { fa[i] = i; cool[i].num = false; } } int Find(int x) { if (x != fa[x]) fa[x] = Find(fa[x]); return fa[x]; } int leng(node a,node b) { if ((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)<=m*m) return true; return false; } void Uoion(int x) { for(int i=1; i<=n; i++) if (cool[i].num and leng(cool[x],cool[i])) { fa[Find(x)] = Find(i); } } int main() { cin>>n>>m; init(); for(int i=1; i<=n; i++) scanf("%d%d",&cool[i].x,&cool[i].y); char c; getchar(); while(~scanf("%c",&c)) { getchar(); if(c=='O') { scanf("%d",&k); cool[k].num = true;//先来标记一下我已经找到这个点 Uoion(k); } else if (c=='S') { scanf("%d%d",&k,&l); if(Find(k)==Find(l)) puts("SUCCESS"); else puts("FAIL"); } getchar(); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator