poj 2236 网络连接问题 并查集
题意:n台电脑,当两台之间的距离小于d的时候可以连接。 题目会进行操作“修复”还有“查询是否已经连接”。只要在查询的时候输出YES或者ON
思路:
- 把可以相互连接的 即两者之间的距离小于 d q[i].push_back(j) 还有 q[j].push_back(i) 这里面的q为动态数组 q[i]存储的是可以与i相连的机器
- 每台机器的初始根节点为i
- 修复操作的时候,进行更改根节点,如果i,j都已经被修复了,那么i j就可以连到同一个根节点上面
- 查询操作的时候,如果两者都在同一个根节点,就说明连接成功,否则连接失败
解决问题的代码:
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std;
const int N = ;
int x[N], y[N], fa[N];
bool p[N];
vector<int> v[N];
int Find(int x)
{
if (fa[x] == x) return x;
return fa[x] = Find(fa[x]);
}
int main()
{
int n, d;
char s[];
memset(p, , sizeof(p));
scanf("%d%d", &n, &d);
for (int i = ; i <= n; i++)
{
scanf("%d%d", &x[i], &y[i]);
fa[i] = i;
}
for (int i = ; i <= n; i++)
for (int j = i + ; j <= n; j++)
if (((x[i] - x[j])*(x[i] - x[j]) + (y[i] - y[j])*(y[i] - y[j])) <= d * d)
{
v[i].push_back(j); v[j].push_back(i);
}
while (~scanf("%s", s))
{
int a, b;
if (s[] == '')
{
scanf("%d", &a);
p[a] = true;
for (int i = ; i < v[i].size(); i++)
{
if (p[v[a][i]])
{
b = Find(v[a][i]);
fa[b] = a;
}
}
}
else
{
scanf("%d%d", &a, &b);
int dx = Find(a);
int dy = Find(b);
if (dx == dy)
printf("SUCCESS\n");
else printf("FAIL\n");
}
}
}
poj 2236 网络连接问题 并查集的更多相关文章
- poj 2236:Wireless Network(并查集,提高题)
Wireless Network Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 16065 Accepted: 677 ...
- POJ 2236 Wireless Network (并查集)
Wireless Network 题目链接: http://acm.hust.edu.cn/vjudge/contest/123393#problem/A Description An earthqu ...
- POJ 2236 Wireless Network(并查集)
传送门 Wireless Network Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 24513 Accepted ...
- poj 2236 Wireless Network 【并查集】
Wireless Network Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 16832 Accepted: 706 ...
- poj 1182:食物链(种类并查集,食物链问题)
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 44168 Accepted: 12878 Description ...
- POJ 1456 Supermarket 区间问题并查集||贪心
F - Supermarket Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Sub ...
- POJ 1182 食物链(种类并查集)
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 63592 Accepted: 18670 Description ...
- POJ 2762 tarjan缩点+并查集+度数
Going from u to v or from v to u? Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15494 ...
- POJ 1182 (经典食物链 /并查集扩展)
(參考他人资料) 向量偏移--由"食物链"引发的总结 http://poj.org/problem?id=1182这道食物链题目是并查集的变型.非常久曾经做的一次是水过的,这次 ...
随机推荐
- IO扩展芯片
PCF8574:一个I2C接口+INT中断引脚口扩展出一个可输出输出的并口P0~P7,INT可以用于中断响应
- Ubuntu下安装Yarm-PM2
首先打开yarm的官网.https://www.yarnpkg.com/zh-Hant/ (一)yarn的官方安装方法: 1.上通过 Debian 套件安裝 Yarn,粘贴以下命令 curl -sS ...
- 路径方案数(mod)
路径方案数(mod) [题目描述] 给一张无向图,n 个点和 m 条边,cyb 在 1 号点,他要去 2 号点, cyb 可以从 a 走到 b,当且仅当a到2的最短路,比b 到2的最短路长. 求 cy ...
- 在MasterPage中检验session是否存在~
在母板頁中檢查user是否登入過,這樣就不用在每個頁中去作檢驗.在其Init事件中寫入如下代碼: protected void ContentPlaceHolder1_Init(object ...
- ECShop怎么首页调用文章列表
举例如首页调用方法:1.先打开index.php文件找到以下代码:$smarty->assign('new_articles', index_get_new_articles()); // 最新 ...
- ABAP常用事务码
开发----------------------------------------------- SE51 屏幕制作 SE91 MESSAGE OBJECT SE80 对象浏览器(可以建开发类 ...
- 常用css和js组件
1 . input框中插入图标 <div class="col-sm-12 col-xs-12 setLineHeight"> <div class=" ...
- Python+selenium之窗口截图
自动化用例是由程序去执行,因此有时候打印的错误信息并不明确,如果在脚本执行错误的时候能对当前窗口截图保存,那么通过图片就可以非常直观的看出出错的原因.webdriver提供了截图函数get_scree ...
- 融云SDK触达用户数破20亿 王者风范双倍展现
11月1日,融云SDK触达用户数突破20亿,业务增长速度及用户覆盖量再创即时通讯云领域新高.自去年11月10日公布SDK触达用户数破10亿以来,融云仅用了一年时间,便取得了触达用户数翻倍的成绩,迅猛的 ...
- CodeForces 77C Beavermuncher-0xFF (树形dp)
不错的树形dp.一个结点能走多次,树形的最大特点是到达后继的路径是唯一的,那个如果一个结点无法往子结点走,那么子结点就不用考虑了. 有的结点不能走完它的子结点,而有的可能走完他的子节点以后还会剩下一些 ...