求助
查看原帖
求助
677127
xiaoxiaoxia楼主2023/11/29 19:30
#include<iostream>
#define inf 0x3f3f3f3f3f
using namespace std;
int n;
int mp[205][205];
int dis[205];
int vis[205];
void init()
{
	for (int i = 0; i < 205; i++)
	{
		dis[i] = inf;
		for (int j = 0; j < 205; j++)
		{
			mp[i][j] = inf;
			if (i == j)
			{
				mp[i][j] = 0;
			}
		}
	}

}
void dijkstra(int x)
{

	for (int i = 0; i < n; i++)
	{
		int minn = inf, u = -1;
		for (int j = 0; j < n; j++)
		{
			if (!vis[j] && dis[j] < minn)
			{
				minn = dis[j];
				u = j;
			}
		}
		vis[u] = 1;
		for (int j = 0; j < n; j++)
		{
			if (!vis[j] && dis[u] + mp[u][j] < dis[j])
			{
				dis[j] = dis[u] + mp[u][j];
			}
		}
	}
}
int main()
{
	cin >> n;
	init();
	dis[0] = 0;
	for (int i = 0; i < n; i++)
	{
		for (int j = i + 1; j < n; j++)
		{
			cin >> mp[i][j];
			mp[j][i] = mp[i][j];
		}
	}
	dijkstra(0);
	cout << dis[n-1] << endl;
	return 0;
}
2023/11/29 19:30
加载中...