poj2236
来源:互联网 发布:mysql设置字符集为utf8 编辑:程序博客网 时间:2024/05/16 08:41
本题就是简单的并查集,没有什么东西,连rank数组都不要,一开始忘了写init函数了,也就是说没初始化,单步了一次然后就过了,以后init函数在主函数写了,每次都忘。想让程序写得有层次点就出问题,bs一下自己。
#include<iostream>
using namespace std;
int f[1010],a[1010][2],used[1010];
int n,d;
void init()
{
for(int i=1;i<=n;i++)
{
f[i]=i;
}
}
int Find(int x)
{
if(x==f[x])
return x;
f[x]=Find(f[x]);
return f[x];
}
void Union(int x,int y)
{
int a=Find(x);
int b=Find(y);
if(a==b)
return;
else
{
f[a]=b;
}
}
void insert(int x)
{
int i;
for(i=1;i<=n;i++)
{
if(i!=x&&used[i])
{
if((a[i][0]-a[x][0])*(a[i][0]-a[x][0])+(a[i][1]-a[x][1])*(a[i][1]-a[x][1])<=d*d)
Union(i,x);
}
}
}
int judge(int x,int y)
{
if(Find(x)==Find(y))
return 1;
else
return 0;
}
int main()
{
int i,j,x,y;
char ch;
scanf("%d%d",&n,&d);
for(i=1;i<=n;i++)
{
scanf("%d%d",&a[i][0],&a[i][1]);
}
init();
while(1)
{
getchar();
if(scanf("%c",&ch)==EOF)
break;
switch(ch)
{
case 'O':
scanf("%d",&j);
used[j]=1;
insert(j);
break;
case 'S':
scanf("%d%d",&x,&y);
if(judge(x,y))
printf("SUCCESS/n");
else
printf("FAIL/n");
break;
}
}
return 0;
}
- poj2236
- poj2236
- POJ2236
- poj2236
- poj2236 并查集
- poj2236并查集
- poj2236解题报告
- POJ2236 Wireless Network
- poj2236 并查集
- poj2236 - Wireless Network
- poj2236 Wireless Network
- poj2236(并查集)
- POJ2236(并查集)
- 并查集-poj2236
- poj2236 并查集
- POJ2236 Wireless Network
- POJ2236 Wireless Network
- poj2236 Wireless Network
- GIS 缓冲区应用及算法实现
- 高级程序员的广度和深度
- ID3
- 多多认识
- Delphi深度探索之PItemIDList的基本概念
- poj2236
- ArcGIS Engine+C#缓冲区分析
- c语言winsock 实现简单的域名解析功能(DNS. v 1.0)
- php define() 函数及defined()函数的用法 【转】
- 有关VB的程序问题
- 基金的四种分类方式
- 常量和变量的区别
- 软件测试工具
- 面向对象健身操——九步迈向优秀软件设计