[题目链接]

https://www.lydsy.com/JudgeOnline/problem.php?id=3362

[算法]

带权并查集

时间复杂度 : O(NlogN)

[代码]

#include<bits/stdc++.h>
using namespace std;
const int MAXN = ; struct Que
{
int f1 , f2 , t;
int id;
} que[MAXN]; int n , m;
int f[MAXN] , dist[MAXN] , x[MAXN] , y[MAXN] , X[MAXN] , Y[MAXN] , d[MAXN];
int ans[MAXN];
char dir[MAXN][]; template <typename T> inline void chkmax(T &x,T y) { x = max(x,y); }
template <typename T> inline void chkmin(T &x,T y) { x = min(x,y); }
template <typename T> inline void read(T &x)
{
T f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
inline bool cmp(Que a,Que b)
{
return a.t < b.t;
}
inline int get_root(int x)
{
if (f[x] == x) return x;
int fa = get_root(f[x]);
X[x] += X[f[x]];
Y[x] += Y[f[x]];
return f[x] = fa;
} int main()
{ scanf("%d%d",&n,&m);
for (int i = ; i <= n; i++) f[i] = i;
for (int i = ; i <= m; i++) scanf("%d%d%d%s",&x[i],&y[i],&d[i],&dir[i]);
int q;
read(q);
for (int i = ; i <= q; i++)
{
scanf("%d%d%d",&que[i].f1 , &que[i].f2 , &que[i].t);
que[i].id = i;
}
sort(que + ,que + q + ,cmp);
int cur = ;
for (int i = ; i <= q; i++)
{
while (cur <= que[i].t)
{
int sx = get_root(x[cur]) , sy = get_root(y[cur]);
if (sx == sy) continue;
f[sx] = sy;
if (dir[cur][] == 'E')
{
X[sx] = -X[x[cur]] + X[y[cur]] - d[cur];
Y[sx] = -Y[x[cur]] + Y[y[cur]];
}
if ( dir[cur][] == 'W' )
{
X[sx] = -X[x[cur]] + X[y[cur]] + d[cur];
Y[sx] = -Y[x[cur]] + Y[y[cur]];
}
if (dir[cur][] == 'N')
{
Y[sx] = -Y[x[cur]] + Y[y[cur]] - d[cur];
X[sx] = -X[x[cur]] + X[y[cur]] ;
}
if (dir[cur][] == 'S')
{
Y[sx] = -Y[x[cur]] + Y[y[cur]] + d[cur];
X[sx] = -X[x[cur]] + X[y[cur]];
}
++cur;
}
if (get_root(que[i].f1) != get_root(que[i].f2)) ans[que[i].id] = -;
else ans[que[i].id] = abs(X[que[i].f1] - X[que[i].f2]) + abs(Y[que[i].f1] - Y[que[i].f2]);
}
for (int i = ; i <= q; i++) printf("%d\n",ans[i]); return ; }

[USACO 2004DEC] Navigation Nightmare的更多相关文章

  1. 【POJ 1984】Navigation Nightmare(带权并查集)

    Navigation Nightmare Description Farmer John's pastoral neighborhood has N farms (2 <= N <= 40 ...

  2. POJ 1984 Navigation Nightmare (数据结构-并检查集合)

    Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 4072   Accepted: 1 ...

  3. POJ1984 Navigation Nightmare —— 种类并查集

    题目链接:http://poj.org/problem?id=1984 Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K T ...

  4. POJ 1984 Navigation Nightmare 带全并查集

    Navigation Nightmare   Description Farmer John's pastoral neighborhood has N farms (2 <= N <= ...

  5. BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集

    BZOJ_3362_[Usaco2004 Feb]Navigation Nightmare 导航噩梦_并查集 Description     农夫约翰有N(2≤N≤40000)个农场,标号1到N,M( ...

  6. POJ 1984 Navigation Nightmare 【经典带权并查集】

    任意门:http://poj.org/problem?id=1984 Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K To ...

  7. POJ1984:Navigation Nightmare(带权并查集)

    Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 7871   Accepted: 2 ...

  8. 带权并查集【bzoj3362】: [Usaco2004 Feb]Navigation Nightmare 导航噩梦

    [bzoj]3362: [Usaco2004 Feb]Navigation Nightmare 导航噩梦 ​ 农夫约翰有N(2≤N≤40000)个农场,标号1到N,M(2≤M≤40000)条的不同的垂 ...

  9. [POJ1984]Navigation Nightmare

    [POJ1984]Navigation Nightmare 试题描述 Farmer John's pastoral neighborhood has N farms (2 <= N <= ...

随机推荐

  1. hexo干货系列:(六)hexo提交搜索引擎(百度+谷歌)

    前言 能看到这里,说明大家都跟我一样,已经把博客搭起来并洋洋洒洒写了几篇博文,正春风得意感觉良好的时候,搭建博客有屎以来最大的危机出现在没有准备的我面前,百度+谷歌都无法搜索到我的博客.装逼还没几天就 ...

  2. POJ-2590-Steps题目详解,思路分析及代码,规律题,重要的是找到规律~~

    Steps Time Limit: 1000MS   Memory Limit: 65536K       http://poj.org/problem?id=2590 Description One ...

  3. SQL Server 创建唯一约束sql语句

    SQL Server 创建唯一约束sql语句   语句示例:   在创建表是时同时创建, 创建id,name,sex三个字段的唯一索引 create table t1( id int primary ...

  4. 【POJ2774&Ural1517】Long Long Message(后缀数组)

    题意:求两个字符串的最长公共子串 n<=1000 思路:这是一道论文题 ..]of longint; n,l1,l2,i,ans,m,l,r:longint; ch:ansistring; pr ...

  5. BZOJ1710: [Usaco2007 Open]Cheappal 廉价回文

    len<=2000的字符串上,给出删掉和添加每种字符的花费,求把字符串变成回文串的最小花费. 首先每个字符添加和删除是一样的,因此花费在添加和删掉每个字符的花费中取小的. 如果每个字符的花费都是 ...

  6. poj3694+hdu2460 求桥+缩点+LCA/tarjan

    这个题使我更深理解了TARJAN算法,题意:无向图,每添加一条边后文桥的数量,三种解法:(按时间顺序),1,暴力,每每求桥,听说这样能过,我没过,用的hash判重,这次有俩个参数(n->10w, ...

  7. iOS present出一个背景为半透明的试图

    WDKChatRoomViewController *roomVC = [[WDKChatRoomViewController alloc] init]; roomVC.titleStr = [gro ...

  8. C. Day at the Beach---cf559

    http://codeforces.com/problemset/problem/599/C 题目大意: 有n个城堡的高度   让你最多分成几个块   每个块排过序之后 整体是按照升序来的 分析:   ...

  9. Spring MVC页面重定向实例

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/mvc-framework/spring-page-redirection-example.html ...

  10. weblogic线程阻塞性能调优(图解)

    转自:http://blog.csdn.net/z69183787/article/details/12647539 声明:出现这个问题有程序方面.网络方面.weblogic设置方面等等原因,此文章主 ...