题目描述

1946 年 3 月 5 日,英国前首相温斯顿·丘吉尔在美国富尔顿发表“铁幕演说”,正式拉开了冷战序幕。

美国和苏联同为世界上的“超级大国”,为了争夺世界霸权,两国及其盟国展开了数十年的斗争。在这段时期,虽然分歧和冲突严重,但双方都尽力避免世界范围的大规模战争(第三次世界大战)爆发,其对抗通常通过局部代理战争、科技和军备竞赛、太空竞争、外交竞争等“冷”方式进行,即“相互遏制,不动武力”,因此称之为“冷战”。

Reddington 是美国的海军上将。由于战争局势十分紧张,因此他需要 时刻关注着苏联的各个活动,避免使自己的国家陷入困境。苏联在全球拥有 N 个军工厂,但由于规划不当,一开始这些军工厂之间是不存在铁路的,为了使武器制造更快,苏联决定修建若干条道路使得某些军工厂联通。Reddington 得到了苏联的修建日程表,并且他需要时刻关注着某两个军工厂是否联通,以及最早在修建哪条道路时会联通。具体而言,现在总共有 M 个操作,操作分为两类:

• 0 u v,这次操作苏联会修建一条连接 u 号军工厂及 v 号军工厂的铁路,注意铁路都是双向的;

• 1 u v,Reddington 需要知道 u 号军工厂及 v 号军工厂最早在加入第几条条铁路后会联通,假如到这次操作都没有联通,则输出 0;

作为美国最强科学家,Reddington 需要你帮忙设计一个程序,能满足他的要求。

输入

第一行两个整数 N,M。

接下来 M 行,每行为 0 u v 或 1 u v 的形式。

数据是经过加密的,对于每次加边或询问,真正的 u,v 都等于读入的 u,v 异或上上一次询问的答案。一开始这个值为 0。

输出

对于每次 1 操作,输出 u,v 最早在加入哪条边后会联通,若到这个操作时还没联通,则输出 0。

样例输入

5 9
0 1 4
1 2 5
0 2 4
0 3 4
1 3 1
0 7 0
0 6 1
0 1 6
1 2 6

样例输出

0
3
5

思路

对于问题,并不需要知道两点路径的具体情况,只需要考虑两点是否连通,以及何时连通即可。
因此可以用一个并查集维护两点的连通关系,向该点的父亲连一条边权为连通时间的边,已经连通的点就没必要再连通了。
这样确保并查集是一棵树,且全为最优解,每次查询两点到LCA路径上的的最大值即可。

由于树的深度最多为logn,因此最终的时间复杂度为O(nlongn)

代码

#include <cstdio>
#include <iostream>using namespace std;const int MAXN=500002;int n,m,fa[MAXN],dat[MAXN],siz[MAXN],vis[MAXN],cnt,pas,ans,vistag,lca;int getint(){int v=0; char ch;while(!isdigit(ch=getchar())); v=ch-48;while(isdigit(ch=getchar())) v=v*10+ch-48; return v;
}int find(int x){return fa[x]==x?x:find(fa[x]);
}int main(){n=getint(); m=getint();for(int i=1;i<=n;i++)fa[i]=i,siz[i]=1;while(m--){int opt=getint(),u=getint(),v=getint();u^=pas; v^=pas; ans=lca=0;if (opt){vistag++;if(find(u)!=find(v)){printf("%d\n",pas=0);continue;}for(int i=u;i;i=fa[i]){vis[i]=vistag;if(fa[i]==i) break;}for(int i=v;i;i=fa[i]){if(vis[i]==vistag && !lca) lca=i;if(fa[i]==i) break;}for(int i=u;i!=lca;i=fa[i]) ans=max(ans,dat[i]);for(int i=v;i!=lca;i=fa[i]) ans=max(ans,dat[i]);printf("%d\n",pas=ans);}else{cnt++;u=find(u),v=find(v);if (u!=v){if(siz[u]>siz[v]) swap(u,v);fa[u]=v;siz[v]+=siz[u];dat[u]=cnt;}}}return 0;
}

【FJ 2016 Day5】冷战(coldwar)相关推荐

  1. FJ省队集训DAY5 T1

    思路:考试的时候打了LCT,自以为能过,没想到只能过80.. 考完一想:lct的做法点数是100W,就算是nlogn也会T. 讲一下lct的做法把:首先如果一条边连接的两个点都在同一个联通块内,那么这 ...

  2. 【2016常州一中夏令营Day5】

    小 W 拼图 [问题描述]小 W 和小 M 一起玩拼图游戏啦~ 小 M 给小 M 一张 N 个点的图,有 M 条可选无向边,每条边有一个甜蜜值,小 W 要选K 条边,使得任意两点间最多有一条路径,并且 ...

  3. 从冷战到深度学习,一文看懂机器翻译发展史

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! CSDN编者友情提示:完成本篇阅读至少需要消耗一周能量,请提前收藏~~~ 图片来源于网络 通 ...

  4. Bzoj 4408: [Fjoi 2016]神秘数 可持久化线段树,神题

    4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 177  Solved: 128 [Submit][Stat ...

  5. Update|亚洲精品菜订餐平台「Chowbus」获400万美金新融资,由Greycroft和FJ labs领投...

    36氪获悉,我们曾报道过的创立于芝加哥的亚洲精品菜订餐平台「Chowbus」,近期完成 400 万美金的新一轮融资,由 Greycroft.FJ labs 领投,HPA.Fika Ventures 跟 ...

  6. 干货丨从冷战到深度学习:一篇图文并茂的机器翻译史

    实现高质量机器翻译的梦想已经存在了很多年,很多科学家都为这一梦想贡献了自己的时间和心力.从早期的基于规则的机器翻译到如今广泛应用的神经机器翻译,机器翻译的水平不断提升,已经能满足很多场景的基本应用需求 ...

  7. 【DeepLab v1 2016】SEMANTIC IMAGE SEGMENTATION WITH DEEP CON- VOLUTIONAL NETS AND FULLY CONNECTED CRFS

    [DeepLab v1]SEMANTIC IMAGE SEGMENTATION WITH DEEP CON- VOLUTIONAL NETS AND FULLY CONNECTED CRFS 用深度卷 ...

  8. 冷战时期_从冷战到深度学习的机器翻译历史

    冷战时期 by Ilya Pestov 通过伊利亚·佩斯托夫(Ilya Pestov) 从冷战到深度学习的机器翻译历史 (A history of machine translation from t ...

  9. ​科技“新冷战”核心技术突破!道翰天琼认知智能机器人平台API接口大脑为您揭秘

    ​科技"新冷战"核心技术突破!道翰天琼认知智能机器人平台API接口大脑为您揭秘 一.科技"新冷战":急迫而现实的挑战 "新冷战"( New ...

最新文章

  1. ServletResponse-中文名的下载
  2. 网页按钮跳转位置_阻止safari从网页跳转至app
  3. bootstrap panel 和table的使用
  4. Codeforces 724 C. Ray Tracing
  5. 《HeadFirst Python》第一章学习笔记
  6. 通过NSNotification来监听键盘弹出和弹回
  7. 设计模式之单例模式8种实现方式,其一:饿汉式-静态常量饿汉式
  8. 响应式布局技术:App如何适配不同尺寸的设备
  9. 如何检查计算机账号克隆
  10. 号外号外~~OSS监控服务上线啦!!
  11. ffmpeg: error while loading shared libraries: libavdevice.so.53
  12. warning CS0618: 'WWW' is obsolete: 'Use UnityWebRequest, a fully featured replacement which is more
  13. 工大瑞普 NP-OSPF综合实验
  14. 《延禧攻略》的配色,简直美到爆!
  15. matlab中灰色模型代码,灰色模型matlab代码
  16. dell商务计算机主机闪烁黄灯,戴尔电脑开不了机 已经几天了 主机灯橙色 闪闪的...
  17. 微博图片设计模板素材推荐 精品 小众
  18. openSUSE Leap 15.2 和 Tumbleweed KDE Plasma 在ThinkPad X61上安装,自带了有线、无线网卡和显卡驱动
  19. ERROR c.alibaba.druid.pool.DruidDataSource - init datasource error 运行代码提示数据库连接错误
  20. 施耐德 m340 编程手册_施耐德推出开放自动化平台 开启“软件驱动自动化”时代...

热门文章

  1. 【Unity】让动画系统支持相对坐标
  2. 哈哈哈哈哈哈不错测试一下测试一下哈哈哈哈哈哈不错测试一下测试一下
  3. 【情书加密】,c++花式表白,这样泡小师妹,没跑了。
  4. 个人简历管理系统-总结
  5. 【LEDE】x86软路由之路-12-浅谈复杂网络环境中的AP优化
  6. TCP/IP中的链路层
  7. 10天内我国痛失20位两院院士!原中科院副院长王佛松逝世,享年89岁
  8. 如何高效提高倾斜摄影三维模型顶层合并的技术方法分析
  9. 代码托管和服务功能多元化,看码客帮如何做软件众包
  10. 盘点营销策划案例之2019年沙雕广告!