题目链接:http://acm.sdibt.edu.cn/vjudge/contest/view.action?cid=2209#problem/F

!a b w 表示b比a大w

?  a b  输出b比a大多少

#include<iostream>
using namespace std;
const int maxn = 100005;
int fa[maxn],val[maxn]; int find_(int x){
if(x != fa[x])
{
int t=fa[x];
fa[x]=find_(fa[x]);
val[x]+=val[t];
return fa[x];
}//路径压缩
return x;
}
void merge_(int a,int b,int c){
int fx,fy;
fx=find_(a);
fy=find_(b);
if(fx != fy)
{
fa[fx]=fy;
val[fx]=val[b]+c-val[a];
}
}
int main(){
int n,m;
while(cin>>n>>m&&n&&m){
char t;
int a,b,c;
for(int i=1;i<=m;i++)
fa[i]=i,val[i]=0;
while(m--){
cin>>t>>a>>b;
if(t == '!')
{
cin>>c;
merge_(a,b,c);
}
else
{
int fx,fy;
fx=find_(a),fy=find_(b);
if(fx != fy)
cout<<"UNKNOWN"<<endl;
else
cout<<val[a]-val[b]<<endl;
}
}
}
}

  

 

Never Wait for Weights(带权并查集+路径压缩)的更多相关文章

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

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

  2. UVALive 6187 Never Wait for Weights 带权并查集

    题意:每次给出每两个数之间的大小差值.在给出关系的过程中插入询问:数a和数b的差值,若不能确定,输出UNKNOWN 解法:相对大小关系的处理:并查集 1.给出两点的相对大小关系后,找到两个点的根节点, ...

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

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

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

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

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

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

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

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

  7. hdu3038(带权并查集)

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

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

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

  9. poj1984 带权并查集

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

随机推荐

  1. 从零开始打jar包--补充

    想试一下动态编译的功能,所以想看一下java如何编译 原文见:http://www.cnblogs.com/flashsun/p/7246260.html 但这篇文章有些错误及遗漏之处,导致有些没有办 ...

  2. C#使用CH341 SPI模块读写SD卡

    SD卡相关CMD命令 ;//卡复位 ; ;//命令9 ,读CSD数据 ;//命令10,读CID数据 ;//命令12,停止数据传输 ;//命令16,设置SectorSize 应返回0x00 ;//命令1 ...

  3. VS Code直接编辑下一行

    ctrl + enter 可以直接跳转到下一行进行编辑,本行后面的字符不受影响. 这在书写html脚本时非常有用.

  4. 第一次使用mybatis

    程序使用mybatis的步骤: 1.配置mybatis 涉及到的配置文件有conf.xml和与实体类对应的映射配置文件 (1) conf.xml:配置数据库信息和需要加载的映射文件 <confi ...

  5. install chrome and chrome driver on ubuntu

    sudo apt install python-minimal # python 2.7.xsudo apt install python-pip # https://www.ubuntuupdate ...

  6. vue插件大全汇总

    Vue是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件特别整理了常用的vue插件,来了个大汇总,方便查找使用,便于工作 ...

  7. 7.6 chcount.c -- 使用逻辑与运算符

    include <stdio.h> #define PERIOD '.' int main(void) { char ch; int charcount = 0; while ((ch = ...

  8. js对象的创建

    一.通过对象直接量来创建 var emptyt={};  //相当于var empty=new Object; //如果属性名中包含空格.连字符(-).还有关键字,保留字时,要用字符串表示 var b ...

  9. win10家庭版,双击bat文件无法运行(double click bat file does not execute)

    win10家庭版,双击bat文件无法运行,弹出文件打开方式选择框. 在网上搜索处理办法,试了以下方法1-5都没有成功,用方法6规避. 方法1:打开一个驱动器,点“工具-文件夹选项→文件类型→新建→扩展 ...

  10. Java spring实现文件下载

    一,实现目的,后台写一个controller,然后前台页面点击文件下载,实现文件下载功能.(文件是存放于服务器的磁盘上的) @RequestMapping("/filesdownloads& ...