最小生成树--PRIM

来源:互联网 发布:数字化校园平台软件 编辑:程序博客网 时间:2024/05/07 06:03
#include <iostream>using namespace std;#define MAXVALUE 100000//以1节点作为缺省开始搜索的节点void prim(int** graph, int vertices, int startPoint = 1) {    int minEdge = MAXVALUE, foundV = 1;    int length = vertices;    bool* visited = new bool[length];    for (int i = 0; i < length; i++)    {        if (startPoint - 1 != i)            visited[i] = false;    }    visited[startPoint - 1] = true;    while (foundV != length) {        minEdge = MAXVALUE;        int edge_a = -1, edge_b = -1;        for (int i = 0; i < length; i++)        {            if (visited[i] == true) {                for (int j = 0; j < length; j++)                {                    int temp = graph[i][j];                    //graph 中以0作为边不存在的标识                    if (visited[j] == false && temp != 0 && temp < minEdge) {                        minEdge = temp;                        edge_a = i;                        edge_b = j;                    }                }            }        }        visited[edge_b] = true;        foundV++;        cout << edge_a + 1 << "->" << edge_b + 1 << ':' << minEdge << endl;    }}
0 0
原创粉丝点击