int mincost[maxn]; bool used[maxn]; int MST() { _for(i,0,V) { mincost[i] = INF; used[i] = false; } mincost[0] = 0; int res = 0; while(1) { int v = -1; _for(u,0,V) if(!used[u] && (v==-1 || mincost[u] < mincost[v])) v = u; if(v==-1) break; used[v] = true; res += mincost[v]; _for(u,0,G[v].size()) mincost[G[v][u].to] = min(mincost[G[v][u].to],G[v][u].cost); } return res; }
Kruskal算法施工中