acwing 238 銀河英雄傳說(並查集)

2021-10-24 09:35:16 字數 874 閱讀 1980

題目位址

維護size和距離的並查集。

用d[i]表示i到父節點的距離。

在合併的時候,a的祖宗到b的祖宗的距離就是b這個集合的size。我們只需要維護兩個祖宗之間的距離就行了。 而a那個集合的子節點到b的祖宗節點的距離會在find函式裡面更新。

求兩個點在不在同一列就是求是否在同乙個集合,它們之間隔的距離就是它們分別到父節點的距離之差減1.

#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

#include

#define int long long

using

namespace std;

typedef pair<

int,

int> pii;

typedef

long

long ll;

const

int inf =

0x3f3f3f3f

;const

double eps =

1e-5

;const

int mod =

1000000007

;const

int n =

1e5+10;

int fa[n]

,d[n]

,si[n]

;int

find

(int x)

return fa[x];}

void

merge

(int a,

int b)

signed

main()

return0;

}

AcWing 238 銀河英雄傳說(帶權並查集)

有乙個劃分為n列的星際戰場,各列依次編號為1,2,n。有n艘戰艦,也依次編號為1,2,n,其中第i號戰艦處於第i列。有t條指令,每條指令格式為以下兩種之一 1 m i j,表示讓第i號戰艦所在列的全部戰艦保持原有順序,接在第j號戰艦所在列的尾部。2 c i j,表示詢問第i號戰艦與第j號戰艦當前是否...

銀河英雄傳說

公元五八 一年,地球居民遷至金牛座 第二行星,在那裡發表銀河聯邦創立宣言,同年改元為宇宙歷元年,並開始向銀河系深處拓展。宇宙歷七九九年,銀河系的兩大軍事集 在巴公尺利恩星域爆發戰爭。泰山壓頂集 宇宙艦隊司令萊因哈特率領十萬餘艘戰艦出征,氣吞山河集 點名將楊威利組織麾下三萬艘戰艦迎敵。楊威利擅長排兵布...

銀河英雄傳說

公元五八 一年,地球居民遷至金牛座 第二行星,在那裡發表銀河聯邦創立宣言,同年改元為宇宙歷元年,並開始向銀河系深處拓展。宇宙歷七九九年,銀河系的兩大軍事集 在巴公尺利恩星域爆發戰爭。泰山壓頂集 宇宙艦隊司令萊因哈特率領十萬餘艘戰艦出征,氣吞山河集 點名將楊威利組織麾下三萬艘戰艦迎敵。楊威利擅長排兵布...