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 |
水过一百题,虽然很多都是水题,但是还是很开心,贴出代码(大牛轻喷)#include <stdio.h> #define MAXN 1010 struct POINT { int x,y; }; int n,count,d; struct POINT node[MAXN]; int father[MAXN],repaired[MAXN]; int dis(int x,int y) { int tempx=node[x].x-node[y].x,tempy=node[x].y-node[y].y; if ((tempx*tempx+tempy*tempy)<=d*d) { return 1; } else return 0; } int find_set(int x) { if(x!=father[x]) father[x]=find_set(father[x]); return father[x]; } void init() { int i; for(i=1;i<=n;i++) father[i]=i; } void union_set(int x,int y) { x=find_set(x); y=find_set(y); father[y]=father[x]; } int main() { int i,x,y; char cmd; count=0; scanf("%d %d",&n,&d); init(); for (i=1;i<=n;i++) { scanf("%d %d",&node[i].x,&node[i].y); } while (scanf(" %c",&cmd)!=EOF) { if (cmd=='O') { scanf("%d",&x); for (i=0;i<count;i++) { if(dis(repaired[i],x)) union_set(repaired[i],x); } repaired[count++]=x; } else{ scanf("%d %d",&x,&y); if (find_set(x)==find_set(y)) { printf("SUCCESS\n"); } else printf("FAIL\n"); } } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator