图算法---普利姆算法

Posted yangmenda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图算法---普利姆算法相关的知识,希望对你有一定的参考价值。

#include<iostream>
#include<cstring>
#include<climits>
using namespace std;
const int M=500;
int cost[M][M];
int Creat(){
    int n,m;
    cin>>n>>m;
    for(int q=1;q<=n;q++){
        for(int w=1;w<=n;w++)cost[q][w]=INT_MAX;
    }
    int a,b,c;
    for(int q=1;q<=m;q++){
        cin>>a>>b>>c;
        cost[a][b]=c;
        cost[b][a]=c;
    }
    return n;
}
void prim(int n){
    int close[M],lowcost[M];
    for(int q=1;q<=n;q++){
        close[q]=1;
        lowcost[q]=cost[1][q];
    }
    close[1]=-1;
    for(int q=1;q<n;q++){
        int Min=INT_MAX,u=q;
        for(int w=1;w<=n;w++)if(close[w]!=-1 && lowcost[w]<Min){
            Min=lowcost[w];
            u=w;
        }
        cout<<"("<<close[u]<<","<<u<<")"<<" "<<lowcost[u]<<endl;
        for(int w=1;w<=n;w++)if(close[w]!=-1 && lowcost[w]>cost[u][w]){
            lowcost[w]=cost[u][w];
            close[w]=u;
        }
    }
    return;
}
int main() {
    int t;
    cin>>t;
    while(t--){
        int n=Creat();
        prim(n);
    }
    return 0;
}

 

以上是关于图算法---普利姆算法的主要内容,如果未能解决你的问题,请参考以下文章

普利姆算法

Day595.普利姆算法 -数据结构和算法Java

图的最小生成树(普利姆prim算法)

Prim普利姆与Kruskal克鲁斯卡尔算法(Java版)

数据结构 普利姆与克鲁斯卡尔的最小生成树(Swift面向对象版)

图的最小生成树算法?