一道带权并查集题目.

带权并查集的重点是信息的合并.

这类题出现得并不多,练习一下.

 #include<bits/stdc++.h>
using namespace std;
#define ll long long
#define FILE "dealing"
#define up(i,j,n) for(int i=j;i<=n;i++)
#define db long double
#define pii pair<int,int>
#define pb push_back
#define mem(a,L) memset(a,0,sizeof(int)*(L+1))
template<class T> inline bool cmin(T& a,T b){return a>b?a=b,true:false;}
template<class T> inline bool cmax(T& a,T b){return a<b?a=b,true:false;}
template<class T> inline T squ(T a){return a*a;}
const ll maxn=+,inf=1e9+,mod=,M=;
ll read(){
ll x=,f=,ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<='')x=(x<<)+(x<<)+ch-'',ch=getchar();
return x*f;
}
int l[maxn],r[maxn],fa[maxn];
int getfa(int x){
if(fa[x]==x)return x;
int y=getfa(fa[x]);
if(y==fa[x])return y;
l[x]+=l[fa[x]],r[x]+=r[fa[x]];
fa[x]=y;
return y;
}
int n,m,Q;
int f1[maxn],f2[maxn],d[maxn],op[maxn];
int xx[maxn],yy[maxn],t[maxn],ans[maxn];
vector<int> linkk[maxn];
int main(){
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
n=read(),m=read();
char ch;
up(i,,m){
f1[i]=read(),f2[i]=read(),d[i]=read();
scanf(" %c",&ch);
if(ch=='E')op[i]=;
else if(ch=='W')op[i]=;
else if(ch=='N')op[i]=;
else if(ch=='S')op[i]=;
}
Q=read();
up(i,,Q){
xx[i]=read(),yy[i]=read(),t[i]=read();
linkk[t[i]].push_back(i);
}
up(i,,n)fa[i]=i;
up(i,,m){
int x=f1[i],y=f2[i],fx=getfa(x),fy=getfa(y);
if(fx!=fy){
if(fx!=x)l[fx]=-l[x],r[fx]=-r[x],l[x]=r[x]=,fa[fx]=x,fa[x]=x;
if(fy!=y)l[fy]=-l[y],r[fy]=-r[y],l[y]=r[y]=,fa[fy]=y,fa[y]=y;
fa[x]=y;
if(op[i]==)l[x]=d[i];
else if(op[i]==)l[x]=-d[i];
else if(op[i]==)r[x]=d[i];
else r[x]=-d[i];
}
for(int j=;j<linkk[i].size();j++){
int t=linkk[i][j];
int x=xx[t],y=yy[t];
int fx=getfa(x),fy=getfa(y);
if(fx!=fy)ans[t]=-;
else ans[t]=abs(l[x]-l[y])+abs(r[x]-r[y]);
}
}
up(i,,Q)printf("%d\n",ans[i]);
return ;
}

BZOJ 3362 Navigation Nightmare的更多相关文章

  1. BZOJ 3362 Navigation Nightmare 带权并查集

    题目大意:给定一些点之间的位置关系,求两个点之间的曼哈顿距离 此题土豪题.只是POJ也有一道相同的题,能够刷一下 别被题目坑到了,这题不强制在线.把询问离线处理就可以 然后就是带权并查集的问题了.. ...

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

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

  3. POJ 1984 Navigation Nightmare 带全并查集

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

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

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

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

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

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

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

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

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

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

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

  9. [POJ1984]Navigation Nightmare

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

随机推荐

  1. Nginx配置文档具体解释

    Nginx的配置文档具体解释.在这儿做个总结,以便以后使用的时间查看. 下面大部分自己整理.部分来自參考 #设置用户 #user  nobody; #启动进程数(一般和server的CPU同样) #能 ...

  2. TP框架模板中ifelse

    {if $_username}<ul class="afterLogin">    <li class="username"><a ...

  3. 【LeetCode】84. Largest Rectangle in Histogram——直方图最大面积

    Given n non-negative integers representing the histogram's bar height where the width of each bar is ...

  4. HDU 3657 Game(取数 最小割)经典

    Game Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  5. apache hadoop 2.4.0 64bit 在windows8.1下直接安装指南(无需虚拟机和cygwin)

    工作须要.要開始搞hadoop了,又是大数据,自己感觉大数据.云.仅仅是ERP.SOAP风潮之后与智能地球一起诞生的概念炒作. 只是Apache是个奇妙的组织.Java假设没有它也不会如今如火中天.言 ...

  6. 阿里云服务器教程–SSH 登录时出现如下错误:Host key verification failed

    注意:本文相关 Linux 配置及说明已在 CentOS 6.5 64 位操作系统中进行过测试.其它类型及版本操作系统配置可能有所差异,具体情况请参阅相应操作系统官方文档. 问题描述 使用 SSH 登 ...

  7. Mongo JavaTest

    import com.mongodb.MongoClient; import com.mongodb.DB; import com.mongodb.DBCollection; import com.m ...

  8. 【翻译自mos文章】执行utlpwdmg.sql之后报ORA-28003, ORA-20001, ORA-20002, ORA-20003, ORA-20004 错误

    执行utlpwdmg.sql之后报ORA-28003, ORA-20001, ORA-20002, ORA-20003, ORA-20004 错误. 适用于: Oracle Server - Ente ...

  9. 利用xlrd模块实现Python读取Excel文档

    # -*- coding: cp936 -*- #python读取excel import xlrd def main(): xls=xlrd.open_workbook("d:\\11.x ...

  10. Git分支中的远程操作实践

    Git分支中的远程操作实践 前几篇博客陆陆续续的讲了好多关于Git操作的内容, 其中在上篇博客聊了<Git中的merge.rebase.cherry-pick以及交互式rebase>,本篇 ...