POJ - 2236 Wireless Network

https://vjudge.net/problem/POJ-2236

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=1010;
int n,d;
int p[N],x[N],y[N],dis[N][N],bk[N];
void init()
{
    
    
	for(int i=1;i<=n;i++) p[i]=i;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			dis[i][j]=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);
}
int find(int x)
{
    
    
	return x==p[x]? x:p[x]=find(p[x]);
}
void unon(int x,int y)
{
    
    
	int fx=find(x),fy=find(y);
	if(fx!=fy) p[fx]=fy;
}
int main()
{
    
    
	ios::sync_with_stdio(false);
//	cin.tie(0);
	cin>>n>>d;
	d=d*d;
	for(int i=1;i<=n;i++)
		cin>>x[i]>>y[i];
	init();
	char ch;
	while(cin>>ch)
	{
    
    
		if(ch=='O')
		{
    
    
			int q;
			cin>>q;
			for(int i=1;i<=n;i++)
				if(dis[q][i]<=d && bk[i])
					unon(q,i);
			bk[q]=1;
		}
		else
		{
    
    
			int a,b;
			cin>>a>>b;
			if(find(a)==find(b))
				cout<<"SUCCESS\n";
			else
				cout<<"FAIL\n";
				
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_52341477/article/details/119978416
今日推荐