最小生成树
\(Kruskal\)
先把边按照权值进行排序,用贪心的思想优先选取权值较小的边,并依次连接,若出现环则跳过此边(用并查集来判断是否存在环)继续搜,直到已经使用的边的数量比总点数少一即可。
\(code\):
sort(t+1,t+m+1,cmp);
for(int i=1;i<=m;++i)
{
if(find(t[i].x)==find(t[i].y)) continue;
merge(t[i].x,t[i].y);
ans+=t[i].v;
if(++cnt==n-1) break;
}
其他
若原图不连通,即建出的是一个森林,要结合题意再进行处理,如货车运输,跑完最大生成树后,有可能建出个森林,那么在接下来的\(LCA\)处理中,就要保证将每棵树都\(dfs\)过一遍。
利用最小生成树解决最小瓶颈路问题