遍匈 / 方象潤更 / 鈍、峯 /

7?5 峯議哘喘

峯議哘喘噴蛍鴻刑?壓朔中初府議電會才臥孀械喘議曾?室宝嶄?祥嗤參峯潤更怏岶方象序佩荷恬議。云准叙網胎峯壓登協峯才鹿栽燕幣嚥塰麻圭中議哘喘。

7?5?1 登協峯


壓念中初府阻恷單屈我峯?軸込健凧峯壓登協諒籾嶄議哘喘?壓糞縞哘喘嶄?峯匆辛喘噐登協諒籾議宙峰才盾畳?广兆議伊旦啣衛諒籾祥頁凪嶄匯箭。

譜嗤伊旦啣衛?蛍艶燕幣葎a?b?c?d?e?f?g?h?凪嶄嗤匯旦拝叙嗤匯旦啣衛頁留夛議?邪啣衛議嶷楚嚥寔啣衛議嶷楚音揖?辛嬬煤?匆辛嬬嶷。孖勣箔參爺峠葎垢醤?喘恷富議曳熟肝方薬僉竃邪啣衛?旺揖扮鳩協宸旦啣衛議嶷楚曳凪万寔啣衛頁煤珊頁嶷。

諒籾議盾畳狛殻泌夕7.12 侭幣?盾畳狛殻嶄議匯狼双登僅更撹阻峯潤更?厘断各宸劔議峯葎登協峯。

夕嶄寄亟忖銚H 才L 蛍艶燕幣邪啣衛熟凪万寔啣衛嶷賜煤。和中斤宸匯登協圭隈紗參傍苧?旺蛍裂万議屎鳩來。

貫伊旦啣衛嶄販函鎗旦?邪譜頁a?b?c?d?e 才f?壓爺峠曾極光慧眉旦序佩曳熟。

邪譜a?b?c 眉旦慧壓爺峠議匯極?d?e?f 眉旦慧壓爺峠議総匯極?辛嬬竃孖眉嶽曳熟潤惚?
?1?a?b?c>d?e?f
?2?a?b?c?d?e?f
?3?a?b?c<d?e?f

宸戦?峪參及匯嶽秤趨葎箭序佩網胎。飛a?b?c>d?e?f?功象籾朕議邪譜?辛參刃協宸鎗旦啣衛嶄駅嗤匯旦葎邪衛?揖扮匆傍苧g?h 葎寔衛。宸扮辛繍爺峠曾極倖肇渠匯旦啣衛?邪譜万断頁c 才f?揖扮繍爺峠曾極議啣衛光算匯旦?邪譜啣衛b?d 恬阻札算?隼朔序佩及屈肝曳熟?椎担曳熟議潤惚揖劔辛嬬嗤眉嶽?

?a?d>b?e 宸嶽秤趨燕苧爺峠曾極肇渠啣衛c?f 拝啣衛b?d 札算朔?爺峠曾極議煤嶷購狼隠隔音延?貫遇傍苧阻邪衛駅隼頁a?e 嶄議匯倖?宸扮厘断峪勣喘匯旦寔衛?b?c?d?f?g?h?才a 賜e 序佩曳熟?祥嬬孀竃邪衛。箭泌?喘b 才a 序佩曳熟?飛a>b?夸a 頁熟嶷議邪衛?飛a?b?夸e 葎熟煤議邪衛?音辛嬬竃孖a<b 議秤趨。

?a?d?b?e 緩扮爺峠曾極喇音峠財延葎峠財?燕苧邪衛匯協壓肇渠議曾旦啣衛c?f 嶄?a?b?d?e?g?h 駅協葎寔啣衛?揖劔議圭隈?喘匯旦寔衛才c 賜f 序佩曳熟?箭泌?喘a 才c 序佩曳熟?飛c>a?夸c 頁熟嶷議邪衛?飛a?c?夸f 葎熟煤議邪衛?音辛嬬竃孖c<a 議秤趨.

?a?d<b?e 緩扮燕苧喇噐爺峠曾極曾旦啣衛b?d 議斤算?哈軟阻曾極煤嶷購狼議個延?椎担辛參刃協b 賜d 嶄嗤匯旦頁邪啣衛?壅峪勣喘匯旦寔衛才b 賜d 序佩曳熟?祥嬬孀竃邪衛。箭泌?喘a 才b 序佩曳熟?飛a<b?夸b 頁熟嶷議邪衛?飛a?b?夸d 葎熟煤議邪衛?音辛嬬竃孖a>b 議秤趨。

斤噐潤惚?2?才?3?議光嶽秤趨?辛梓孚貧峰圭隈恬窃貌議蛍裂。夕7.12 侭幣議登協峯淫凄阻侭嗤辛嬬窟伏議秤趨?伊旦啣衛嶄?耽匯旦啣衛脅辛嬬頁賜煤賜嶷議邪衛?咀緩慌嗤16 嶽潤惚?郡啌壓峯嶄?夸嗤16 倖匐潤泣?貫夕嶄辛心竃?耽嶽潤惚脅俶勣将狛眉肝曳熟嘉嬬誼欺。

7?5?2 鹿栽議燕幣


鹿栽頁匯嶽械喘議方象燕幣圭隈?斤鹿栽辛參恬謹嶽荷恬?邪譜鹿栽S 喇飛孤倖圷殆怏撹?辛參梓孚蝶匯号夸委鹿栽S 皿蛍撹飛孤倖札音屢住議徨鹿栽?箭泌?鹿栽S?{1?2?3?4?5?6?7?8?9?10}?辛參瓜蛍撹泌和眉倖札音屢住議徨鹿栽?
S1?{1?2?4?7}
S2?{3?5?8}
S3?{6?9?10}
鹿栽{S1?S2?S3}祥瓜各葎鹿栽S 議匯倖皿蛍。

緩翌?壓鹿栽貧珊嗤恷械喘議匯乂塰麻?曳泌鹿栽議住、旺、温、餓參式登協匯倖圷殆頁倦頁鹿栽嶄議圷殆?吉吉。

葎阻嗤丼仇斤鹿栽峇佩光嶽荷恬?辛參喘峯潤更燕幣鹿栽。喘峯嶄議匯倖潤泣燕幣鹿栽嶄議匯倖圷殆?峯潤更寡喘褒牌燕幣隈贋刈。箭泌?鹿栽S1、S2 才S3 辛蛍艶燕幣葎夕7.13(a)、(b)、(c)侭幣議潤更。繍万断恬葎鹿栽S 議匯倖皿蛍?贋刈壓匯略方怏嶄?泌夕7.14
侭幣。 凪嶄data 囃贋刈潤泣云附議方象?parent 囃葎峺?褒牌潤泣議峺寞?軸贋刈褒牌潤泣壓方怏嶄議會催。

輝鹿栽寡喘宸嶽贋刈燕幣圭隈扮?載否叟糞孖鹿栽議匯乂児云荷恬。箭泌?箔曾倖鹿栽議旺鹿?祥辛參酒汽仇委匯倖鹿栽議峯功潤泣恬葎総匯倖鹿栽議峯功潤泣議頃徨潤泣。泌箔貧峰鹿栽S1 才S2 議旺鹿?辛參燕幣葎?
S1∪S2?{1?2?3?4?5?7?8}
乎潤惚喘峯潤更燕幣泌夕7.15 侭幣。 鹿栽旺塰麻議麻隈糞孖泌和?
void Union?NodeType a[ ]?int i?int j?
/*栽旺參方怏a 議及i 倖圷殆才及j 倖圷殆葎峯功潤泣議鹿栽*/
{ if (a[i].parent!=-1||a[j].parent!=-1)
{printf(“\n 距喘歌方音屎鳩”)?
return?
}
a[j].parent=i; /*繍i 崔葎曾倖鹿栽慌揖議功潤泣*/
}
麻隈7.1

泌惚勣臥孀蝶倖圷殆侭壓議鹿栽?辛參冽彭乎圷殆議褒牌囃?貧臥?輝臥欺蝶倖圷殆議褒牌囃峙葎?1 扮?乎圷殆祥頁侭臥圷殆侭奉鹿栽議峯功潤泣?麻隈泌和?
int Find?NodeType a[ ]?elemtype x?
{/*壓方怏a 嶄臥孀峙葎x 議圷殆侭奉議鹿栽?*/
/*飛孀欺?卦指峯功潤泣壓方怏a 嶄議會催?倦夸?卦指?1*/
/*械楚MAXNODE 葎方怏a 議恷寄否楚*/
int i,j;
i=0;
while (i<MAXNODE && a[i].data!=x) i++;
if (i>=MAXNODE) return –1; /*峙葎x 議圷殆音奉噐乎怏鹿栽?卦指?1*/
j=i;
while (a[j].parent!=-1) j=a[j].parent;
return j; /*j 葎乎鹿栽議峯功潤泣壓方怏a 嶄議會催*/
}
麻隈7.2

7?5?3 購狼吉勺箔吉勺窃諒籾


1?諒籾?厮岑鹿栽S 式凪貧議吉勺購狼R?箔R 壓S 貧議匯倖皿蛍{S1,S2,…,Sn}?凪嶄?S1,S2,…,Sn 蛍艶葎R 議吉勺窃?万断諾怎?
∪Si?S 拝Si∩Sj?ф(i≠j)
譜鹿栽S 嶄嗤n 倖圷殆?購狼R 嶄嗤m 倖會甜斤。

2?麻隈房??
?1?綜S 嶄耽倖圷殆光徭侘撹匯倖汽圷殆議徨鹿?芝恬S1?S2?…?Sn?
?2?嶷鹸響秘m 倖會甜斤?斤耽倖響秘議會甜斤<x,y>?登協x 才y 侭奉徨鹿。音払匯違來?邪譜x∈Si?y∈Sj?飛Si≠Sj?夸繍Si 旺秘Sj?旺崔Si 葎腎?賜繍Sj 旺秘Si?旺崔Sj 葎腎??飛Si?Sj?夸音恂焚担荷恬?俊彭響秘和匯斤會甜。岷欺m 倖會甜斤脅瓜侃尖狛朔?S1?S2?…?Sn 嶄侭嗤掲腎徨鹿軸葎S 議R 吉勺窃?宸乂吉勺窃議鹿栽軸葎鹿栽S 議匯倖皿蛍。

3?方象議贋刈潤更?斤鹿栽議贋刈寡喘及7.5.2 弌准嶄初府議鹿栽議贋刈圭塀?軸寡喘褒牌燕幣隈栖贋刈云麻隈嶄議鹿栽。

4? 麻隈糞孖
宥狛念中議蛍裂辛岑?云麻隈壓糞孖狛殻嶄侭喘欺議児云荷恬嗤參和曾倖?
?1?Find?S?x?臥孀痕方。鳩協鹿栽S 嶄議汽圷殆x 侭奉徨鹿Si?痕方議卦指峙葎乎徨鹿峯功潤泣壓褒牌燕幣隈方怏嶄議會催?
?2?Union?S?i?j?鹿栽栽旺痕方。繍鹿栽S 議曾倖札音屢住議徨鹿栽旺?i 才j蛍艶葎曾倖徨鹿喘峯燕幣議功潤泣壓褒牌燕幣隈方怏嶄議會催。栽旺扮?繍匯倖徨鹿議功潤泣議褒牌囃議峙喇短嗤褒牌個葎峺?総匯倖徨鹿議功潤泣。

宸曾倖荷恬議糞孖壓7.5.2 弌准嶄厮将初府狛?和中祥云諒籾議盾畳麻隈化帶公竃宙峰?
?k=1
?飛k>m 夸廬∂?倦夸廬?
?響秘匯會甜斤<x?y>
∠i= Find?S?x?;j= Find?S?y?
⊥飛i≠j?夸Union?S?i?j??
⌒k++
∂補竃潤惚?潤崩。

5? 麻隈議扮寂鹸墫來?
臥孀麻隈才栽旺麻隈議扮寂鹸墫業蛍艶葎O(d)才O(1)?凪嶄d 頁峯議侮業。宸嶽燕幣鹿栽議峯議侮業才峯議侘撹狛殻嗤購。壓自極議秤趨和?耽響秘匯倖會甜斤?祥俶勣栽旺匯肝?軸恷謹序佩(m?n)/2 肝栽旺?飛邪譜耽肝栽旺脅頁繍根撹埀謹議功潤泣峺?根撹埀富議功潤泣?夸恷朔誼欺議鹿栽峯議侮業葎n?遇峯議侮業嚥臥孀嗤購。宸劔畠何荷恬議扮寂鹸墫來辛浩柴葎O(n2)。

飛繍栽旺麻隈序佩個序?軸栽旺扮繍根撹埀富議功潤泣峺?根撹埀謹議功潤泣?宸劔氏受富峯議侮業?貫遇受富阻臥孀扮議曳熟肝方。陥聞屁倖麻隈丼楕議戻互。

AltStyle によって変換されたページ (->オリジナル) /