题目链接:http://poj.org/problem?id=1984

题意:给定n个farm,m条边连接farm,k组询问,询问根据前t3条边求t1到t2的曼哈顿距离,若不可求则输出-1。

思路:类似与poj1182,也是并查集的向量运用。用root[i]表示farm i的祖先,x[i],y[i]分别表示i到其祖先的曼哈顿距离的横纵坐标,这里离线化先保存边的信息,在询问的时候更新边的信息,具体的合并操作时x[i],y[i]的运算手动推一下就明白了。

AC代码:

 #include<cstdio>
#include<cstdlib>
using namespace std; const int maxn=;
struct node{
int f1,f2,l;
char c;
}a[maxn]; int n,m,k,root[maxn],x[maxn],y[maxn]; int getr(int kk){
if(root[kk]==kk) return kk;
else{
int tmp=root[kk];
root[kk]=getr(root[kk]);
x[kk]+=x[tmp];
y[kk]+=y[tmp];
return root[kk];
}
} int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i)
root[i]=i,x[i]=y[i]=;
for(int i=;i<=m;++i)
scanf("%d%d%d %c",&a[i].f1,&a[i].f2,&a[i].l,&a[i].c);
int p=;
scanf("%d",&k);
while(k--){
int t1,t2,t3;
scanf("%d%d%d",&t1,&t2,&t3);
for(int i=p+;i<=t3;++i){
int r1=getr(a[i].f1),r2=getr(a[i].f2),xx,yy;
if(a[i].c=='N') xx=,yy=a[i].l;
else if(a[i].c=='S') xx=,yy=-a[i].l;
else if(a[i].c=='E') xx=a[i].l,yy=;
else xx=-a[i].l,yy=;
root[r2]=r1;
x[r2]=x[a[i].f1]-xx-x[a[i].f2];
y[r2]=y[a[i].f1]-yy-y[a[i].f2];
}
p=t3;
int r1=getr(t1),r2=getr(t2);
if(r1==r2)
printf("%d\n",abs(x[t1]-x[t2])+abs(y[t1]-y[t2]));
else
printf("-1\n");
}
return ;
}

poj1984(带权并查集)的更多相关文章

  1. poj1984 带权并查集(向量处理)

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

  2. poj1984 带权并查集

    题意:有多个点,在平面上位于坐标点上,给出一些关系,表示某个点在某个点的正东/西/南/北方向多少距离,然后给出一系列询问,表示在第几个关系给出后询问某两点的曼哈顿距离,或者未知则输出-1. 只要在元素 ...

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

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

  4. POJ 1703 Find them, Catch them(带权并查集)

    传送门 Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 42463   Accep ...

  5. [NOIP摸你赛]Hzwer的陨石(带权并查集)

    题目描述: 经过不懈的努力,Hzwer召唤了很多陨石.已知Hzwer的地图上共有n个区域,且一开始的时候第i个陨石掉在了第i个区域.有电力喷射背包的ndsf很自豪,他认为搬陨石很容易,所以他将一些区域 ...

  6. poj1417 带权并查集 + 背包 + 记录路径

    True Liars Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2713   Accepted: 868 Descrip ...

  7. 【BZOJ-4690】Never Wait For Weights 带权并查集

    4690: Never Wait for Weights Time Limit: 15 Sec  Memory Limit: 256 MBSubmit: 88  Solved: 41[Submit][ ...

  8. hdu3038(带权并查集)

    题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=3038 题意: n表示有一个长度为n的数组, 接下来有m行形如x, y, d的输入, 表示 ...

  9. 洛谷OJ P1196 银河英雄传说(带权并查集)

    题目描述 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦 创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山 ...

  10. poj1611 带权并查集

    题意:病毒蔓延,现在有 n 个人,其中 0 号被认为可能感染,然后给出多个社交圈,如果某个社交圈里有人被认为可能被感染,那么所有这个社交圈里的人都被认为可能被感染,现在问有多少人可能被感染. 带权并查 ...

随机推荐

  1. django之def get_response(self, request):

    class BaseHandler(object)方法get_response,控制着处理请求的流程,调用中间件,返回请求. def get_response(self, request): &quo ...

  2. idea 关闭自动保存,未保存星号提醒, springboot + freemarker 热部署

    1,自动保存 File > setting 去掉下图勾选 2,未保存文件星号提示 File > Settings 3,spring boot 项目 热部署 3.1,pom文件添加依赖 &l ...

  3. [转]講講 John Carmack 的快速反平方根演算法

    講講 John Carmack 的快速反平方根演算法  原地址http://213style.blogspot.com/2014/07/john-carmack.html 本篇的主題很簡單,講講怎麼快 ...

  4. Django 之多表查询 与多表的使用

    1.django的多表查询 主要区分为: 正向查询    逆向查询 1. 多表查询: 是一个复杂的查询,他分为对象查询和__模糊查询两种方式 2. 多表查询: 又分为 一对一查询, 一对多查询, 多对 ...

  5. linux 一个跟踪文件删除的小技巧

    最近有同事问我说他有个现场环境,经常会丢失业务文件,每天都出现,几百个里面丢失1到两个. 为了解决这个问题,我让他布置audit,具体可以man一下auditctl. 过了一天,他说audit.log ...

  6. ReactiveX 学习笔记(6)条件操作符

    Conditional and Boolean Operators 本文的主题为处理 Observable 的条件和布尔操作符. 这里的 Observable 实质上是可观察的数据流. RxJava操 ...

  7. React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: undefined.

    昨天在项目中,重新封装组件时,引用了原来的一个子组件,但发现子组件在其他页面正常,在新的组件里面就发生保存, 然后把子组件注释,随便显示其div元素也正常,纠结了很久,最后发现引用的方式有问题 子组件 ...

  8. Linux性能测试分析命令_iostat

    iostat用于输出CPU和磁盘I/O相关的统计信息 iostat语法 用法:iostat [ 选项 ] [ <时间间隔> [ <次数> ]] 常用选项说明: -c:只显示系统 ...

  9. 遍历DOM树,获取父节点

    通过获取父节点,还可以获取父节点的父节点. 有3个常用方法: 方法  说明  parent()  选取父节点  parents()  选取所有父节点  parentsUntil("div&q ...

  10. 尚未解决的webpack问题

    91% additional asset processing 打包过程中,在91%的时候会出现卡顿几秒 在js,css使用chunkhash替代hash 字体和图片:没有此chunkhash,只有h ...