poj2236 Wireless Network
2013-05-24 22:09
288 查看
#include<iostream> #include<cstring> #include<cstdio> using namespace std; struct cell{ bool set; int x;int y; }a[1010]; bool vis[1010][1010]; int root[1010]; int n,d; bool dis(cell a,cell b){ if((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)<=d*d) return 1; else return 0; } int find(int c){ if(c!=root[c]) root[c]=find(root[c]); return root[c]; } void check(int a,int b){ int ra=find(a); int rb=find(b); root[ra]=rb; } int main(){ int i,j; char ope[5]; int com; int from,to; while(scanf("%d%d",&n,&d)!=EOF){ for(i=1;i<=n;i++){ root[i]=i; a[i].set=0; } memset(vis,0,sizeof(vis)); for(i=1;i<=n;i++) scanf("%d%d",&a[i].x,&a[i].y); for(i=1;i<=n;i++) for(j=1;j<=n;j++) vis[i][j]=vis[j][i]=dis(a[i],a[j]); while(scanf("%s",ope)!=EOF){ //我真的很菜,scanf("%c")不能用在这里 if(ope[0]=='O'){ scanf("%d",&com); a[com].set=1; for(i=1;i<=n;i++){ if(i==com) continue; if(vis[i][com]&&a[i].set) check(i,com); } } if(ope[0]=='S'){ scanf("%d%d",&from,&to); if(find(from)==find(to)) printf("SUCCESS\n"); else printf("FAIL\n"); } } } return 0; }
相关文章推荐
- [POJ-2236] The Suspects
- POJ 2236 Wireless Network (并查集)
- POJ-2236 Wireless Network(并查集)
- POJ 2236 Wireless Network 第一次做并查集,第一次写博客
- Wireless Network(POJ - 2236)并查集
- poj 2236 Wireless Network(并查集)
- Poj 2236 Wireless NetWork(并查集)
- POJ 2236 Wireless Network(并查集)
- poj2236解题报告
- poj 2236 Wireless Network
- [kuangbin带你飞]专题五 并查集 A POJ 2236
- 并查集-POJ-2236-Wireless Network
- poj2236——Wireless Network(并查集)
- poj 2236 Wireless Network 之幷查集
- poj 2236并查集
- POJ2236---Wireless Network
- POJ 2236 并查集
- 【POJ 2236】Wireless NetWork(并查集应用)
- poj 2236 wireless network
- POJ2236详细的解题报告(C语言版)