Navigation Nightmare---poj1984(多关系并查集)
题目链接:http://poj.org/problem?id=1984
给定n个城市,m条边告诉你城市间的相对距离,接下来q组询问,问你在第几条边添加后两城市的距离。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <stack>
#include <map>
#include <vector>
using namespace std;
typedef long long LL;
#define PI 4*atan(1.0)
#define N 42000
#define met(a, b) memset(a, b, sizeof(a)) int f[N], rx[N], ry[N], ans[N];
///rx[i]表示i和f[i]的x的偏移量,ry[i]是y的偏移量;
struct node
{
int u, v, d, I, Id;
char dir[];
}a[N], q[N]; int cmp(node p, node q)
{
return p.Id<q.Id;
} int Find(int x)
{
int k = f[x];
if(x!=f[x])
{
f[x] = Find(f[x]);
rx[x] += rx[k];
ry[x] += ry[k];
}
return f[x];
} void Union(int num)
{
int x = a[num].u, y = a[num].v;
char ch = a[num].dir[]; int px = Find(x), py = Find(y); if(px != py)
{
f[px] = py; rx[px] = rx[y] - rx[x];
ry[px] = ry[y] - ry[x]; if(ch == 'E')
rx[px] -= a[num].d ;
if(ch == 'W')
rx[px] += a[num].d;
if(ch == 'N')
ry[px] -= a[num].d;
if(ch == 'S')
ry[px] += a[num].d;
}
}
int main()
{
int n, m, Q;
while(scanf("%d %d", &n, &m)!=EOF)
{
met(a, );met(q, ); met(ans, );
for(int i=; i<=n; i++)
f[i] = i, rx[i] = ry[i] = ; for(int i=; i<=m; i++)
scanf("%d %d %d %s", &a[i].u, &a[i].v, &a[i].d, a[i].dir); scanf("%d", &Q);
for(int i=; i<=Q; i++)
{
scanf("%d %d %d", &q[i].u, &q[i].v, &q[i].I);
q[i].Id = i;
} sort(q+, q+Q+, cmp);///不排序也可以;因为是按I的顺序给的;
for(int pre=, i=; i<=Q; i++)
{
for(int j=pre+; j<=q[i].I; j++)
Union(j); pre = q[i].I;
int u = q[i].u, v = q[i].v; int px = Find(u);
int py = Find(v); if(px != py) ans[q[i].Id] = -;
else ans[q[i].Id] = abs(rx[u]-rx[v]) + abs(ry[u]-ry[v]);
}
for(int i=; i<=Q; i++)
printf("%d\n", ans[i]);
}
return ;
}
Navigation Nightmare---poj1984(多关系并查集)的更多相关文章
- BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集
BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集 Description 农夫约翰有N(2≤N≤40000)个农场,标号1到N,M( ...
- POJ1984:Navigation Nightmare(带权并查集)
Navigation Nightmare Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 7871 Accepted: 2 ...
- 【POJ 1984】Navigation Nightmare(带权并查集)
Navigation Nightmare Description Farmer John's pastoral neighborhood has N farms (2 <= N <= 40 ...
- poj 1984 Navigation Nightmare(带权并查集+小小的技巧)
题目链接:http://poj.org/problem?id=1984 题意:题目是说给你n个线,并告知其方向,然后对于后面有一些询问,每个询问有一个时间点,要求你输出在该时间点a,b的笛卡尔距离,如 ...
- 又见关系并查集 以POJ 1182 食物链为例
简单的关系并查集一般非常easy依据给出的关系搞出一个有向的环,那么两者之间的关系就变成了两者之间的距离. 对于此题: 若u.v不在一个集合内,则显然此条语句会合法(暂且忽略后两条.下同). 那么将f ...
- poj1984 带权并查集(向量处理)
Navigation Nightmare Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 5939 Accepted: 2 ...
- poj1984 带权并查集
题意:有多个点,在平面上位于坐标点上,给出一些关系,表示某个点在某个点的正东/西/南/北方向多少距离,然后给出一系列询问,表示在第几个关系给出后询问某两点的曼哈顿距离,或者未知则输出-1. 只要在元素 ...
- poj 1182 食物链(关系并查集)
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 62824 Accepted: 18432 Description ...
- Find them, Catch them(POJ 1703 关系并查集)
Find them, Catch them Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 38668 Accepted: ...
随机推荐
- PyQT中多重继承,其中继承的父类有QObject或QObject的子孙类
如果Child多重继承(Parent_1,Parent_2,Parent_3),其super函数 super(Child, self).__init__() 则会执行继承的最左侧的父类:Parent_ ...
- 转载:30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- Ajax分页(MVC下)(附源码,前后台)
网上找的一个分页js,自己改了改.. 前台页面 @{ ViewBag.Title = "Index"; } <h1>分页方法封装</h1> <scri ...
- html文档流和事件流
文档流: 标准文档流,float position: relative.absolute.fixed可以脱离标准文档流: 回归标准文档流: https://blog.csdn.net/Welkin_q ...
- AOP技术应用和研究--AOP简单应用
为了更好的理解AOP实践和体现AOP的优势.我们始终将OOP和AOP的比較贯穿到下文中.并在终于总结出AOP与OOP相比所拥有的长处,AOP的缺点以及AOP一般的使用场景. 1.1 问题空间到解空间的 ...
- 调用外部 DLL 中的函数(1. 早绑定)
,b,t,);end; end.
- gradle教程 [原创](eclipse/ADT下 非插件 非Android Studio/AS)纯手打 第三篇:gradle完整的实战
上两篇的地址 安装配置 http://www.cnblogs.com/uncle2000/p/4276833.html 简单实战 http://www.cnblogs.com/uncle2000/p/ ...
- 编辑框添加灰色提示字(html+VC)
Html中添加灰色提示字,使用属性placeholder即可! <input type="text" placeholder="要显示的文字"> 但 ...
- ionic模版引擎及循环
首先来个官方文档:http://ionicframework.com/docs/api/directive/ionList/ 1)ionic模型引擎的定界符是双大括号 {{}} 2)要使用什么模版变量 ...
- vue2.0+element-ui(01简单点的单页面)
前言: 在<Vue.js权威指南>刚出版的时候,自己就作为一名前端粉捧了一把场,可是真是应了那句“出来混,总是要还的“这句话了,那时候信心满满的买来书想要认真研究,最终却还是把它搁浅了.直 ...