BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集
BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集
Description
.jpg)
Input
Output
Sample Input
1 6 13 E
6 3 9 E
3 5 7 S
4 1 3 N
2 4 20 W
4 7 2 S
3
1 6 1
1 4 3
2 6 6
Sample Output
-1
10
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 40050
int n,fa[N],xx[N],yy[N],m,ans[N];
char opt[10];
int Abs(int x) {
return x>0?x:-x;
}
struct E {
int a,b,c,d;
void rd() {
scanf("%d%d%d%s",&a,&b,&c,opt);
if(opt[0]=='N') d=1;
if(opt[0]=='S') d=2;
if(opt[0]=='W') d=3;
if(opt[0]=='E') d=4;
}
}e[N];
struct Q {
int t,x,y,id;
void rd(){scanf("%d%d%d",&x,&y,&t);}
bool operator < (const Q &u) const {
return t<u.t;
}
}q[N];
int find(int x) {
if(fa[x]==x) return x;
int tmp=fa[x];
fa[x]=find(fa[x]);
xx[x]+=xx[tmp];
yy[x]+=yy[tmp];
return fa[x];
}
void add(int x) {
int a=e[x].a,b=e[x].b,c=e[x].c,d=e[x].d;
int da=find(a),db=find(b);
fa[da]=db;
// if(ta != tb) f[ta] = tb , dx[ta] = dx[b[t]] + cx[t] - dx[a[t]] , dy[ta] = dy[b[t]] + cy[t] - dy[a[t]];
if(d==1) {
xx[da]=xx[b]-xx[a];
yy[da]=yy[b]-yy[a]-c;
}else if(d==2) {
xx[da]=xx[b]-xx[a];
yy[da]=yy[b]-yy[a]+c;
}else if(d==3) {
xx[da]=xx[b]-xx[a]-c;
yy[da]=yy[b]-yy[a];
}else {
xx[da]=xx[b]-xx[a]+c;
yy[da]=yy[b]-yy[a];
}
}
int query(int x,int y) {
int dx=find(x),dy=find(y);
if(dx!=dy) return -1;
return Abs(xx[x]-xx[y])+Abs(yy[x]-yy[y]);
}
int main() {
scanf("%d%*d",&n);
int i;
for(i=1;i<=n;i++) fa[i]=i;
for(i=1;i<n;i++) {
e[i].rd();
}
scanf("%d",&m);
for(i=1;i<=m;i++) {
q[i].rd(); q[i].id=i;
}
sort(q+1,q+m+1);
int now=1;
for(i=1;i<=m;i++) {
while(now<=q[i].t) {
add(now); now++;
}
ans[q[i].id]=query(q[i].x,q[i].y);
}
for(i=1;i<=m;i++) {
printf("%d\n",ans[i]);
}
}
BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集的更多相关文章
- 带权并查集【bzoj3362】: [Usaco2004 Feb]Navigation Nightmare 导航噩梦
[bzoj]3362: [Usaco2004 Feb]Navigation Nightmare 导航噩梦 农夫约翰有N(2≤N≤40000)个农场,标号1到N,M(2≤M≤40000)条的不同的垂 ...
- BZOJ3362 [Usaco2004 Feb]Navigation Nightmare 导航噩梦
标题效果:自脑补. 思维:与维护两个维度和可设置为检查右. 注意,标题给予一堆关系的.我们应该加入两对关系. Code: #include <cstdio> #include <cs ...
- BZOJ 3362: [Usaco2004 Feb]Navigation Nightmare 导航噩梦
Description 给你每个点与相邻点的距离和方向,求两点间的曼哈顿距离. \(n \leqslant 4\times 10^4\) . Sol 加权并查集. 像向量合成一样合并就可以了,找 \( ...
- 【POJ 1984】Navigation Nightmare(带权并查集)
Navigation Nightmare Description Farmer John's pastoral neighborhood has N farms (2 <= N <= 40 ...
- POJ1984:Navigation Nightmare(带权并查集)
Navigation Nightmare Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 7871 Accepted: 2 ...
- poj 1984 Navigation Nightmare(带权并查集+小小的技巧)
题目链接:http://poj.org/problem?id=1984 题意:题目是说给你n个线,并告知其方向,然后对于后面有一些询问,每个询问有一个时间点,要求你输出在该时间点a,b的笛卡尔距离,如 ...
- BZOJ_2303_[Apio2011]方格染色 _并查集
BZOJ_2303_[Apio2011]方格染色 _并查集 Description Sam和他的妹妹Sara有一个包含n × m个方格的 表格.她们想要将其的每个方格都染成红色或蓝色. 出于个人喜好, ...
- BZOJ_1015_[JSOI2008]星球大战_并查集
BZOJ_1015_[JSOI2008]星球大战_并查集 题意:很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的 机遇,一支反抗军摧毁了帝国的超级武器, ...
- BZOJ_1998_[Hnoi2010]Fsk物品调度_并查集+置换
BZOJ_1998_[Hnoi2010]Fsk物品调度_并查集+置换 Description 现在找工作不容易,Lostmonkey费了好大劲才得到fsk公司基层流水线操作员的职位.流水线上有n个位置 ...
随机推荐
- spring3.1文档目录翻译
整理google共享磁盘找到了2014年翻译的spring官方文档的目录,分享出来可能会对英语不好的同学有些帮助吧. spring3.1官方文档目录-中文 spring3.1官方文档-英文 关于作者
- TensorFlow学习记录(一)
windows下的安装: 首先访问https://storage.googleapis.com/tensorflow/ 找到对应操作系统下,对应python版本,对应python位数的whl,下载. ...
- JavaScript 跨域之 POST 实现。
javascript 跨域是一个很常见的问题,其中 jsonp 是一个最常用的手段,但是 jsonp 只支持 get,不支持 post,所以如果想通过 jsonp 来 post 一些数据,就头大了. ...
- go Mutex (互斥锁)和RWMutex(读写锁)
转载自: https://blog.csdn.net/skh2015java/article/details/60334437 golang中sync包实现了两种锁Mutex (互斥锁)和RWMute ...
- 一款C++写的tcp性能测试(压力测试)工具
基线终于开发完了,自己写的服务器性能和压力承受能力到底怎么样,在网上没有找到合适的测试工具可以用.于是自己基于MFC写了一款测试工具. 启动界面如下: 设置参数后,运行如下: 运行完界面如下: 源码路 ...
- Mysql系列-数据库
一 .数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组 ...
- Spring 下 MyBatis 的基本使用
参看代码 GitHub : pom.xml dbconfig.properties DbConfig.java MySqlBean.java User.java UserMapper.java Use ...
- XAMPP重置MySQL密码
找到XAMPP的安装位置,这里以我的为例:C:\xampp 那么MySQL的路径:C:\xampp\mysql phpMyAdmin的路径:C:\xampp\phpMyAdmin 修改MySQL密码 ...
- windows系统下输入法图标显示设置
原先任务栏有两个搜狗输入法的标志,还有一个"中/英"的图标:甚至桌面还悬浮这一个搜狗输入法图标. 打开vscode等工具时,桌面悬浮的图标有时可能会遮挡到一些信息,十分不爽. 如今 ...
- Java并发之AQS详解
一.概述 谈到并发,不得不谈ReentrantLock:而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQ ...