poj 2236 并查集水题
2016-06-20 13:54
357 查看
点击打开链接
#include <iostream>
#include <cmath>
using namespace std;
const int M= 1100;
typedef struct {
double x;
double y;
}Node;
Node node[M];
int par[M],n,state[M]; // state[i] i号机是否修好
double d;
void Inin()
{
for(int i=1;i<=n;i++)
{
par[i]=i;
state[i]=0;
}
}
bool dis(int a,int b)
{
double dx=node[b].x-node[a].x;
double dy=node[b].y-node[a].y;
if(sqrt(dx*dx+dy*dy)<=d)
{
return true;
}
return false;
}
int find(int x)
{
if(x!=par[x])
{
par[x]=find(par[x]);
}
return par[x];
}
void Union(int x,int y)
{
int a=find(x);
int b=find(y);
if(a!=b)
par[a]=b;
}
int main()
{
cin>>n>>d;
for(int i=1;i<=n;i++)
{
cin>>node[i].x>>node[i].y;
}
Inin();//
char c;
while(cin>>c)
{
if(c=='O')
{
int x;
cin>>x;
state[x]=1;//
for(int i=1;i<=n;i++)
{
if(x!=i&&state[i]&& dis(x,i))
{
Union(x,i); // 在一个集合中的元素能互相 communicate
}
}
}
if(c=='S')
{
int a,b;
cin>>a>>b;
if(state[a]==0||state[b]==0)
{
cout<<"FAIL"<<endl;
continue;
}
int fa=find(a);
int fb=find(b);
if(fa!=fb)
{
cout<<"FAIL";
}
else
{
cout<<"SUCCESS";
}
cout<<endl;
}
}
return 0;
}
#include <iostream>
#include <cmath>
using namespace std;
const int M= 1100;
typedef struct {
double x;
double y;
}Node;
Node node[M];
int par[M],n,state[M]; // state[i] i号机是否修好
double d;
void Inin()
{
for(int i=1;i<=n;i++)
{
par[i]=i;
state[i]=0;
}
}
bool dis(int a,int b)
{
double dx=node[b].x-node[a].x;
double dy=node[b].y-node[a].y;
if(sqrt(dx*dx+dy*dy)<=d)
{
return true;
}
return false;
}
int find(int x)
{
if(x!=par[x])
{
par[x]=find(par[x]);
}
return par[x];
}
void Union(int x,int y)
{
int a=find(x);
int b=find(y);
if(a!=b)
par[a]=b;
}
int main()
{
cin>>n>>d;
for(int i=1;i<=n;i++)
{
cin>>node[i].x>>node[i].y;
}
Inin();//
char c;
while(cin>>c)
{
if(c=='O')
{
int x;
cin>>x;
state[x]=1;//
for(int i=1;i<=n;i++)
{
if(x!=i&&state[i]&& dis(x,i))
{
Union(x,i); // 在一个集合中的元素能互相 communicate
}
}
}
if(c=='S')
{
int a,b;
cin>>a>>b;
if(state[a]==0||state[b]==0)
{
cout<<"FAIL"<<endl;
continue;
}
int fa=find(a);
int fb=find(b);
if(fa!=fb)
{
cout<<"FAIL";
}
else
{
cout<<"SUCCESS";
}
cout<<endl;
}
}
return 0;
}
相关文章推荐
- gen already exists but is not a source folder. Convert to a source folder or rename it
- 欢迎使用CSDN-markdown编辑器
- Activity生命周期
- LXT6架构-ARM公司GPU系列性能变迁(2016版)
- Intellij IDEA 配置 JavaWeb开发环境(Tomcat 配置)
- PE中的配置文件定义
- EasyUI datetimebox 时间格式化
- CodeForces 682C Alyona and the Tree 搜索
- iOS—简单封装UITableView使用1
- 从租售比看中国房价的合理性
- hdu 1021 Fibonacci Again
- 导入maven不能选择install而应该选择Imort-Maven-Existing maven projects
- 算法基础-最大公约数
- 职场感悟一
- if逻辑判断中 grep -q 的用法
- MFC各种控件属性介绍
- textarea value显示的值在2个标签中间;
- 企业级 Linux 安全管理实例(1)
- COCI2015/2016 Contest#4 E Solution
- java设计模式之桥模式