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& ...
随机推荐
- 使用MWC四轴起飞侧翻解决方法
原因如下:1.电机顺序错了,如上图所示,上面蓝色的箭头是机头,绿色的箭头是电机转向,3.10.11.9对应MWC飞控版上的D3,D9,D11,D9,蓝色箭头对应MWC飞控板的箭头 或者传感器的Y轴 以 ...
- Python开发【第九篇】:HTML (二)
python[第十四篇]HTML基础 时间:2016-08-08 20:57:27 阅读:49 评论:0 收藏:0 [点我收藏+] 标签: 什么是HTML? H ...
- python学习之-成员信息增删改查
python学习之-成员信息增删改查 主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证,#!/usr/bin/env p ...
- xml文件中 android:showAsAction = " " 的作用
在xml文件中设置android:showAsAction = " "有什么作用呢 安卓开发项目文件中有一个目录叫做menu,里面有main.xmlitem选项里有一句 andro ...
- JS获取客户端的窗口大小
function getClientSize() { var c = window, b = document, a = b.documentElement; if (c.in ...
- (转)模板引擎类dedetemplate.class.php使用说明
1.概述 织梦的模板标签类似于XML格式,所有的模板都含有定界符,默认情况下是{dede:*}和{/dede:*},“*”代表模板标记名称. 一般情况下{dede:*}和{/dede:*}是成对出现的 ...
- 如何修改UITableView每个cell的分隔线和左边的距离?
在ios7中,UITableViewCell左侧会有默认15像素的空白.这时候,设置setSeparatorInset:UIEdgeInsetsZero 能将空白去掉.但是在ios8中,设置setSe ...
- http请求的cookie
Cookie的作用: Cookie是用于维持服务端会话状态的,通常由服务端写入,在后续请求中,供服务端读取. HTTP请求,Cookie的使用过程 1.server通过HTTP Response中的& ...
- hibernate_validator_09
创建自己的约束规则 尽管Bean Validation API定义了一大堆标准的约束条件, 但是肯定还是有这些约束不能满足我们需求的时候, 在这种情况下, 你可以根据你的特定的校验需求来创建自己的约束 ...
- Spring mvc 中有关 Shiro 1.2.3 配置问题
Spring 版本:3.2.x, 4.0.x [问题说明] 首先介绍下配置出错情况: (1)项目中,Spring3 and Spring4 的 applicationContext.xml aop ...