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