bzoj4668 冷战
冷戰
Time Limit: 10 Sec Memory Limit: 256 MB
Description
1946 年 3 月 5 日,英國前首相溫斯頓·丘吉爾在美國富爾頓發表“鐵
幕演說”,正式拉開了冷戰序幕。
美國和蘇聯同為世界上的“超級大國”,為了爭奪世界霸權,兩國及其
盟國展開了數十年的斗爭。在這段時期,雖然分歧和沖突嚴重,但雙方都
盡力避免世界范圍的大規模戰爭(第三次世界大戰)爆發,其對抗通常通
過局部代理戰爭、科技和軍備競賽、太空競爭、外交競爭等“冷”方式進
行,即“相互遏制,不動武力”,因此稱之為“冷戰”。
Reddington 是美國的海軍上將。由于戰爭局勢十分緊張,因此他需要
時刻關注著蘇聯的各個活動,避免使自己的國家陷入困境。蘇聯在全球擁
有 N 個軍工廠,但由于規劃不當,一開始這些軍工廠之間是不存在鐵路
的,為了使武器制造更快,蘇聯決定修建若干條道路使得某些軍工廠聯通。
Reddington 得到了蘇聯的修建日程表,并且他需要時刻關注著某兩個軍工
廠是否聯通,以及最早在修建哪條道路時會聯通。具體而言,現在總共有
M 個操作,操作分為兩類:
? 0 u v,這次操作蘇聯會修建一條連接 u 號軍工廠及 v 號軍工廠的鐵
路,注意鐵路都是雙向的;
? 1 u v, Reddington 需要知道 u 號軍工廠及 v 號軍工廠最早在加入第
幾條條鐵路后會聯通,假如到這次操作都沒有聯通,則輸出 0;
作為美國最強科學家, Reddington 需要你幫忙設計一個程序,能滿足
他的要求。
Input
第一行兩個整數 N, M。
接下來 M 行,每行為 0 u v 或 1 u v 的形式。
數據是經過加密的,對于每次加邊或詢問,真正的 u, v 都等于讀入的
u, v 異或上上一次詢問的答案。一開始這個值為 0。
1 ≤ N, M ≤ 500000,解密后的 u, v 滿足1 ≤ u, v ≤ N, u不等于v
Output
對于每次 1 操作,輸出 u, v 最早在加入哪條邊后會聯通,若到這個操
作時還沒聯通,則輸出 0。
Sample Input
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
Sample Output
0
3
并查集啟發式合并就是科學的暴力QAQ。。。
因為你的路徑上有信息就不能路徑壓縮
然后你的find函數就要寫成遞歸,每找一次爸爸就更新一次信息就好了QAQ
轉載于:https://www.cnblogs.com/LLppdd/p/9782369.html
總結
以上是生活随笔為你收集整理的bzoj4668 冷战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 区块链分布式云存储项目盘点
- 下一篇: 人脸马赛克