题目意思是一个图中,只有上下左右四个方向的边。给出这样的一些边,

求任意指定的2个节点之间的距离。

就是看不懂,怎么破

 /*
POJ 1984
并查集
*/ #include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <math.h>
using namespace std; const int MAXN=;
int F[MAXN];
int dx[MAXN],dy[MAXN]; int F1[MAXN],F2[MAXN],L[MAXN];
char D[MAXN][]; struct Node
{
int u,v;
int index;
int I;
}node[MAXN];
int ans[MAXN]; int find(int x)
{
if(F[x]==-)return x;
int tmp=find(F[x]);
dx[x]+=dx[F[x]];
dy[x]+=dy[F[x]];
return F[x]=tmp;
}
bool cmp(Node a,Node b)
{
return a.I<b.I;
}
int main()
{
int n,m;
int Q;
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
#endif
while(scanf("%d%d",&n,&m)==)
{
memset(F,-,sizeof(F));
memset(dx,,sizeof(dx));
memset(dy,,sizeof(dy));
for(int i=;i<=m;i++)
{
scanf("%d%d%d%s",&F1[i],&F2[i],&L[i],&D[i]);
}
scanf("%d",&Q);
for(int i=;i<Q;i++)
{
scanf("%d%d%d",&node[i].u,&node[i].v,&node[i].I);
node[i].index=i;
}
sort(node,node+Q,cmp);
int t=;
for(int i=;i<Q;i++)
{
while(t<=m&&node[i].I>=t)
{
int t1=find(F1[t]),t2=find(F2[t]);
if(t1!=t2)
{
F[t2]=t1;
if(D[t][]=='N')
{
dy[t2]=dy[F1[t]]-dy[F2[t]]+L[t];
dx[t2]=dx[F1[t]]-dx[F2[t]];
}
else if(D[t][]=='S')
{
dy[t2]=dy[F1[t]]-dy[F2[t]]-L[t];
dx[t2]=dx[F1[t]]-dx[F2[t]];
}
else if(D[t][]=='E')
{
dx[t2]=dx[F1[t]]-dx[F2[t]]+L[t];
dy[t2]=dy[F1[t]]-dy[F2[t]];
}
else if(D[t][]=='W')
{
dx[t2]=dx[F1[t]]-dx[F2[t]]-L[t];
dy[t2]=dy[F1[t]]-dy[F2[t]];
}
}
t++;
}
if(find(node[i].u)!=find(node[i].v))ans[node[i].index]=-;
else
{
ans[node[i].index]=abs(dx[node[i].u]-dx[node[i].v])+abs(dy[node[i].u]-dy[node[i].v]);
}
}
for(int i=;i<Q;i++)printf("%d\n",ans[i]);
}
return ;
}

poj 1984 并查集的更多相关文章

  1. poj 1797(并查集)

    http://poj.org/problem?id=1797 题意:就是从第一个城市运货到第n个城市,最多可以一次运多少货. 输入的意思分别为从哪个城市到哪个城市,以及这条路最多可以运多少货物. 思路 ...

  2. POJ 2492 并查集扩展(判断同性恋问题)

    G - A Bug's Life Time Limit:10000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u S ...

  3. POJ 2492 并查集应用的扩展

    A Bug's Life Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 28651 Accepted: 9331 Descri ...

  4. POJ 3228 [并查集]

    题目链接:[http://poj.org/problem?id=3228] 题意:给出n个村庄,每个村庄有金矿和仓库,然后给出m条边连接着这个村子.问题是把所有的金矿都移动到仓库里所要经过的路径的最大 ...

  5. poj 1733 并查集+hashmap

    题意:题目:有一个长度 已知的01串,给出多个条件,[l,r]这个区间中1的个数是奇数还是偶数,问前几个是正确的,没有矛盾 链接:点我 解题思路:hash离散化+并查集 首先我们不考虑离散化:s[x] ...

  6. poj 3310(并查集判环,图的连通性,树上最长直径路径标记)

    题目链接:http://poj.org/problem?id=3310 思路:首先是判断图的连通性,以及是否有环存在,这里我们可以用并查集判断,然后就是找2次dfs找树上最长直径了,并且对树上最长直径 ...

  7. POJ 3657 并查集

    题意: 思路: 1.二分+线段树(但是会TLE 本地测没有任何问题,但是POJ上就是会挂--) 2.二分+并查集 我搞了一下午+一晚上才搞出来----..(多半时间是在查错) 首先 如果我们想知道这头 ...

  8. poj 2236 并查集

    并查集水题 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring& ...

  9. poj 1417(并查集+简单dp)

    True Liars Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2087   Accepted: 640 Descrip ...

随机推荐

  1. html 中的列表

    html 中列表可以分为 1.  无序列表(ul--li 的形式) 2.  有序列表(ol li的形式) 3.  定义列表(dl 的形式) 下面来看几种列表的具体内容: 1.无序列表. 无序列表的格式 ...

  2. linux 查看内存和cpu占用比较多的进程

    1.可以使用一下命令查使用内存最多的10个进程        ps -aux | sort -k4nr | head -n 102. 可以使用一下命令查使用CPU最多的10个进程        ps ...

  3. ogg数据初始化历程记录

    之前,源端数据表结构发生改变,不知道前面的同事是怎么搞得(生成的数据定义文件不对,还是没有把进程启动),造成进程停止20天,然后重启复制进程,对比源端和目标端数据有差异(总共差10000多条数据),问 ...

  4. ogg使用语句

    create tablespace ogg datafile '/oracle/oradata/DRMT/ogg01.dbf' size 50M autoextend on; edit params ...

  5. kvm 简单了解

    网络: *主机(装有ESX的PC服务器)简称host,虚拟机简称guest *Host的一个或多个网卡组成一个虚拟交换机,虚拟交换机上创建端口组label,端口组指定vlan tag,虚拟机指定网络标 ...

  6. 有关mysql的innodb_flush_log_at_trx_commit参数【转】

    一.参数解释 0:log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下在事务提交的时候,不会主动触发写入磁盘的操作. 1:每次事务 ...

  7. 无状态Http

    无状态的根本原因 浏览器和服务器使用socket通信,服务器将请求结果返回给浏览器后,会关闭当前socket连接.而且服务器会在处理页面完毕后销毁页面对象. 应用层面的原因 浏览器和服务器之间通信都遵 ...

  8. Spring如何解析Dubbo标签

    1. 要了解Dubbo是如何解析标签的,首先要清楚一点就是Spring如何处理自定义标签的,因为Dubbo的标签可以算是Spring自定义标签的一种情况: 2. Spring通过两个接口来解析自定义的 ...

  9. Activity工作流 -- java运用

    一. 什么是工作流 以请假为例,现在大多数公司的请假流程是这样的 员工打电话(或网聊)向上级提出请假申请——上级口头同意——上级将请假记录下来——月底将请假记录上交公司——公司将请假录入电脑 采用工作 ...

  10. /proc文件夹介绍

    Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过 ...