Prim算法

Prim算法和Dijkstra算法十分相似,都是从某个顶点出发,不断添加边的算法。

代码:

int cost[MAX_V][MAX_V];
int mincost[MAX_V];
bool used[MAX_V];
int V;

int prim(int s) {

    for(int i = 0; i < V; i++) {
        mincost[i] = INF;
        used[i] = false;
    }
    mincost[0] = 0;
    int res = 0;

    while(true) {
        int v = -1;

        for(int u = 0; u < V; ++u) {
            if(!used[u] && (v == -1 || mincost[u] < mincost[v]))
                v = u;
        }

        if(v == -1)
            break;
        used[v] = true;
        res += mincost[v];

        for(int u = 0; u < V; u++)
            mincost[u] = min(mincost[u], mincost[v] + cost[v][u]);
    }
    return res;
}

results matching ""

    No results matching ""