prim算法,0pts,求救qwq
  • 板块P1194 买礼物
  • 楼主WindyDay
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/3/10 21:47
  • 上次更新2023/10/23 22:00:02
查看原帖
prim算法,0pts,求救qwq
636358
WindyDay楼主2023/3/10 21:47

#include <iostream>
#include <vector>
#include <cstring>
#include <queue>
using namespace std;

const int N = 505;

struct node
{
	int v, w;
};

int n, m;

vector<node> g[N];
int dis[N];
bool vis[N];

int prim(int st)
{	
	memset(dis, 0x3f, sizeof(dis));
	dis[st] = 0;
	int sum = 0;
	for(int i = 1; i <= m; i++)
	{
		int k = 0;
		for(int j = 1; j <= m; j++)
		{
			if(!vis[j] && dis[j] < dis[k])
			{
				k = j;
			}
		}
		
		if(k == 0) return 0;
		
		vis[k] = 1;
		sum += dis[k];
		
		for(int j = 0; j < g[k].size(); j++)
		{
			int v = g[k][j].v;
			int w = g[k][j].w;
			if(!vis[v] && w < dis[v])
			{
				dis[v] = w;
			}
		}
	}
	
	return sum;
}

int main()
{
	cin >> n >> m;
	int i;
	int u, v, w;
	for(int i = 1; i <= m; i++)
	{
		for(int j = 1; j <= m; j++)
		{
		    cin >> w;
		    if(w == 0) w = n;
		    g[i].push_back(node{j, w});
		}
	}
	int s = prim(1);
	cout << s << endl;
	return 0;
}
2023/3/10 21:47
加载中...