#include <iostream>
#include <vector>
using namespace std;
#define max 99999
int func(vector<vector<int>>& map)
{
int sum(0);
int n = map.size();
vector<int> visited(n,0);
vector<int> lowcost = map[0];
visited[0] = 1;
for (auto i = 0; i < n;++i)
{
int min_ = max;
int index(0);
for (auto j = 0; j < n;++j)
{
if (!visited[j] && lowcost[j]<min_ )
{
min_ = lowcost[j];
index = j;
}
}
if (min_ == max)
break;
sum += lowcost[index];
visited[index] = 1;
for (auto j = 0; j < n;++j)
{
if (!visited[j] && map[index][j]<lowcost[j] )
{
lowcost[j] = map[index][j];
}
}
}
return sum;
}
int main()
{
vector<vector<int>> map;
map = vector<vector<int>> {{0,1,3},{1,0,2},{3,2,0}};
cout<<func(map)<<endl;
return 0;
}
【算法题】最小生成树
最新推荐文章于 2023-05-17 13:40:57 发布