POJ -2236 Wireless Network
来源:互联网 发布:数控机床的编程 编辑:程序博客网 时间:2024/06/05 09:24
题意:
对于给出的电脑可以进行两项操作:修复和查询。
当两台电脑之间的距离小于d的时候就视为是连通的,套一下模板就可以。
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;int fa[1100],vis[1100];int n,d;struct aa{int x,y;}a[1100];int find(int h) { if (h!= fa[h]) { fa[h] = find(fa[h]); //这个回溯时的压缩路径是精华 } return fa[h]; } /*int find(int x){while(x!=fa[x]) x=fa[x]; return x; }*/void uni(int c1,int c2){ int dist=(a[c1].x-a[c2].x)*(a[c1].x-a[c2].x)+(a[c1].y-a[c2].y)*(a[c1].y-a[c2].y); c1=find(c1) ; c2=find(c2) ; if(dist<=d*d && c1!=c2) { fa[c1]=c2 ; }}int main(){scanf("%d%d",&n,&d);for(int i=1;i<1100;i++)fa[i]=i;memset(vis,0,sizeof(vis));for(int i=1;i<=n;i++)scanf("%d%d",&a[i].x,&a[i].y);getchar();char te;while(cin>>te){if(te=='S'){int a1,b1;scanf("%d%d",&a1,&b1);if(find(a1)==find(b1)&&vis[a1]&&vis[b1]) puts("SUCCESS");else puts("FAIL");}else {int b1;scanf("%d",&b1);vis[b1]=1;for(int i=1;i<=n;i++){if(!vis[i]||i==b1) {continue;}uni(i,b1);}}} return 0;}
阅读全文
0 0
- poj 2236 Wireless Network
- poj 2236 Wireless Network
- poj 2236 Wireless Network
- POJ 2236 Wireless Network
- POJ-2236 Wireless Network
- poj 2236 Wireless Network
- POJ 2236 - Wireless Network
- poj 2236 Wireless Network
- POJ 2236 Wireless Network
- poj 2236 wireless network
- POJ--2236--Wireless Network
- POJ-2236-Wireless Network
- poj 2236 Wireless Network
- poj 2236 Wireless Network
- POJ 2236Wireless Network
- POJ 2236 Wireless Network
- POJ 2236 Wireless Network
- POJ 2236 Wireless Network
- 美团点评2017秋招笔试真题-运维工程师B
- 汇编语言字符串比较与查找
- 控制出兵波数及数量(协程)
- zookpeer 伪集群搭建及 C API使用
- 【POJ】1222
- POJ -2236 Wireless Network
- Windows服务器安装Memcache缓存服务及PHP扩展
- 深入理解Java:注解(Annotation)自定义注解入门
- 简单几步,提升.Net Core的开发效率
- div css用float时引起背景不正常显示的解决办法
- SQL报表语句;SQL获取今日、本周、本月数据
- 汇编语言数据段查找ASCII码并回显
- 18.进程间通信方式
- 格雷码---递归