有點有趣的並查集問題,類似於食物鏈而略簡單
使用sum[i]表示以i為祖先的並查集的元素個數(不包含i), 以dis[i]表示i到其祖先的距離,每次getfather時根據x的直接父親來更新x的dis值,每次修改操作時用sum[y]更新dis[x],用sum[x]更新sum[y],最後輸出時直接利用兩個點的dis值得解
1 #include 2 #include 3 #include 456const
int maxn = 30000 + 500;7
intfather[maxn], dis[maxn];
8int
sum[maxn];
9char
c;10
intx, y;
11int
t;12
13int getfather(int
x) 20
21int
main ()
26for (int i = 1; i <= t; i++)
36 } else42}
4344
return0;
45 }
銀河英雄傳說 洛谷1196 並查集
有點有趣的並查集問題,類似於食物鏈而略簡單 使用sum i 表示以i為祖先的並查集的元素個數 不包含i 以dis i 表示i到其祖先的距離,每次getfather時根據x的直接父親來更新x的dis值,每次修改操作時用sum y 更新dis x 用sum x 更新sum y 最後輸出時直接利用兩個點的...
洛谷 1196 銀河英雄傳說 並查集
題目描述 楊威利擅長排兵布陣,巧妙運用各種戰術屢次以少勝多,難免恣生驕氣。在這次決戰中,他將巴公尺利恩星域戰場劃分成30000列,每列依次編號為1,2,30000。之後,他把自己的戰艦也依次編號為1,2,30000,讓第i號戰艦處於第i列 i 1,2,30000 形成 一字長蛇陣 誘敵深入。這是初始...
洛谷 1196 銀河英雄傳說
傳送門 寫題一時wa了時間不多了計畫還沒完成先放下去寫道水題好像是正確的選擇。對每個點記錄它到當前代表元的距離,初始都為0 到自己 合併時之前代表元的距離就等於它要合併的那個集合的size。路徑壓縮時先加上父親到代表元的距離,再把父親換成代表元。twenty include include incl...