最小生成树

\(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\)过一遍。

The Child and Zoo好题

利用最小生成树解决最小瓶颈路问题

posted @ 2020-01-22 20:02  lhm_liu  阅读(137)  评论(0编辑  收藏  举报