求救!!不知道怎么错的
查看原帖
求救!!不知道怎么错的
361817
bilibili6楼主2021/3/7 11:20
#include<iostream>
using namespace std;
typedef long long ll;
ll e[10001][10001], dis[50005], book[50005], t1, t2, t3;
ll y;
int main()
{
	ll n, m, s;
	ll inf = 2147483647;
	cin >> n >> m >> s;

	for (int i = 1; i <= n; i++)
		book[i] = 0;
	book[s] = 1;

	for(int i=1;i<=n;i++)
		for (int j = 1; j <= n; j++)
		{
			if (i == j)
				e[i][j] = 0;
			else
				e[i][j] = inf;
		}

	for (int i = 1; i <= m; i++)
	{
		cin >> t1 >> t2 >> t3;
		e[t1][t2] = t3;
	}

	for (int i = 1; i <= n; i++)
		dis[i] = e[s][i];

	for (int i = 1; i <= n - 1; i++)
	{
		ll min = inf;
		for (int j = 1; j <= n; j++)
		{
			if (book[j] == 0 && dis[j] < min)
			{
				min = dis[j];
				y = j;
			}
		}

		book[y] = 1;
		for (int i = 1; i <= n; i++)
		{
			if (e[y][i] < inf)
			{
				if (dis[i] > dis[y] + e[y][i])
					dis[i] = dis[y] + e[y][i];
			}
		}
	}
	for (int i = 1; i < n; i++)
		cout << dis[i] << ' ';
	cout << dis[n];
	return 0;
2021/3/7 11:20
加载中...