为啥只对了一个
查看原帖
为啥只对了一个
1270412
HGerdd楼主2024/3/5 16:10
#include <iostream>
#include <cmath>
#include<vector>
#define INF 1000000005
using namespace std;


int main()
{
    int n,m,t;
    cin >> n >> m;  
    vector<vector<int>> g(n+1,vector<int>(n+1,INF));
    
	for(int i = 1; i <= m; i++)
	{
		int a,b,w;
		cin >> a >> b >> w;
		g[a][b] = w;
		g[b][a] = w;
	}
	vector<int> d = g[1];
	//cout << d[2];
	int res = 0;
	vector<bool> v(n+1, false);
	v[1] = true;
	for(int i = 1; i < n; i++)
	{
		int min = INF+1;
		for(int j = 1; j <= n; j++)
		{
			if(!v[j] && d[j] < min)
			{
				t = j;
				min = d[j];
			}
		}
		res += min;
		v[t] = true;
		
		for(int j = 1; j <= n; j++)
		{
			if(!v[j] && g[t][j] < d[j])
			{
				d[j] = g[t][j];
			}
		}
	}
	cout << res;
    return 0;
}
2024/3/5 16:10
加载中...