I - Navigation Nightmare-poj 1984
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<queue>
#include<stack>
using namespace std; const int maxn = ; int f[maxn];
struct Point{int E, N;}val[maxn];//记录相对位置
struct node{int u, v, len, op;}data[maxn];
int dir[] = {, -, -, };//代表东西南北 int Find(int x)
{
int k = f[x];
if(f[x] != x)
{
f[x] = Find(f[x]);
val[x].E += val[k].E;
val[x].N += val[k].N;
} return f[x];
}
void Union(int u, int v, int len, int op)
{
int ru = Find(u), rv = Find(v); if(ru != rv)
{
f[rv] = ru;//别倒着写,因为有方向是B在A的位置
val[rv].E = -val[v].E + val[u].E + len * dir[op] * (op < ? : );
val[rv].N = -val[v].N + val[u].N + len * dir[op] * (op > ? : );
}
} int main()
{
int i, N, M; while(scanf("%d%d", &N, &M) != EOF)
{
char s[]; for(i=; i<=N; i++)
{
f[i] = i;
val[i].E = val[i].N = ;
} for(i=; i<=M; i++)
{
scanf("%d%d%d%s", &data[i].u, &data[i].v, &data[i].len, s);
if(s[] == 'E')
data[i].op = ;
else if(s[] == 'W')
data[i].op = ;
else if(s[] == 'S')
data[i].op = ;
else
data[i].op = ;
} int Q, u, v, ru, rv; scanf("%d", &Q); i = ;
while(Q--)
{
scanf("%d%d%d", &u, &v, &M); while(i <= M)
{
Union(data[i].u, data[i].v, data[i].len, data[i].op);
i++;
} ru = Find(u), rv = Find(v); if(ru != rv)
printf("-1\n");
else
{
int ans = (int)(fabs(val[u].E-val[v].E) + fabs(val[u].N-val[v].N));
printf("%d\n", ans);
}
}
} return ;
}
I - Navigation Nightmare-poj 1984的更多相关文章
- Navigation Nightmare POJ - 1984
Navigation Nightmare Farmer John's pastoral neighborhood has N farms (2 <= N <= 40,000), usual ...
- Navigation Nightmare POJ - 1984 带权并查集
#include<iostream> #include<cmath> #include<algorithm> using namespace std; ; // 东 ...
- 【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 Navigation Nightmare Time Limit: 2000MS Memory Limit: 30000K To ...
- POJ 1984 Navigation Nightmare 带全并查集
Navigation Nightmare Description Farmer John's pastoral neighborhood has N farms (2 <= N <= ...
- POJ 1984 Navigation Nightmare (数据结构-并检查集合)
Navigation Nightmare Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 4072 Accepted: 1 ...
- POJ1984:Navigation Nightmare(带权并查集)
Navigation Nightmare Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 7871 Accepted: 2 ...
- POJ1984 Navigation Nightmare —— 种类并查集
题目链接:http://poj.org/problem?id=1984 Navigation Nightmare Time Limit: 2000MS Memory Limit: 30000K T ...
- BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集
BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集 Description 农夫约翰有N(2≤N≤40000)个农场,标号1到N,M( ...
- poj 1984 并查集
题目意思是一个图中,只有上下左右四个方向的边.给出这样的一些边, 求任意指定的2个节点之间的距离. 就是看不懂,怎么破 /* POJ 1984 并查集 */ #include <stdio.h& ...
随机推荐
- ButterKnife 注解
简介 官网:http://jakewharton.github.io/butterknife/ github:https://github.com/JakeWharton/butterknife 依赖 ...
- windows服务(Windows Installer问题,错误5:拒绝访问)
Windows Installer问题,错误5:拒绝访问 shillan,2006-11-03 09:40:38 现象: 使用MSI文件来安装的软件在安装和卸载时系统提示:“不能访问Windows I ...
- Jquery 操作 select
1.判断select选项中 是否存在Value="paraValue"的Item $("#selectid option[@value='paraValue']" ...
- 认识div(division)在排版中的作用
在网页制作过程过中,可以把一些独立的逻辑部分划分出来,放在一个<div>标签中,这个<div>标签的作用就相当于一个容器. 语法: <div>…</div&g ...
- 重新开始学习javase_Exception
“违例”(Exception)这个词表达的是一种“例外”情况,亦即正常情况之外的一种“异常”.在问题发生的时候,我们可能不知具体该如何解决,但肯定知道已不能不顾一切地继续下去.此时,必须坚决地停下来, ...
- 【USACO 3.2.5】魔板
[描述] 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方格都有一种颜色.这8种颜色用前8个 ...
- CentOS6.5 下 Mysql5.7主从复制
包下载http://url.cn/WrNg5S 主数据库:192.168.161.129 从数据库1:192.168.161.130 从数据库1:192.168.161.138 MySQL安装地址:/ ...
- 关于InstallShield Projects[转]
关于 InstallShield Projects: InstallShield 可以创建三种类型的项目(Project) 1.InstallScript Pr ...
- Nginx源码研究五:NGINX的配置信息管理
配置信息是nginx系统重要的组成部分,配置信息的使用,实际上包含两层,一层是用户针对参数定义了值,例如下面nginx参数文件中的 keepalive_timeout 65,还有一部分是用户没有定义值 ...
- SCJP_104——题目分析(1)
1.1) public class ReturnIt{2) returnType methodA(byte x, double y){3) return (short)x/y*2;4) }5) }wh ...