dijkstra 70pts求助
查看原帖
dijkstra 70pts求助
356005
Yuyuko_qwq楼主2024/8/13 00:01

测试点#4#5#7 WA

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
int n, m, s, u, v, a, d[10001];
struct Edge
{
	int v, w;
	Edge(int a, int b)
	{
		v = a; w = b;
	}
};
vector<Edge>Node[10001];
bool f[10001];
int main()
{
	memset(d, 0x3f, sizeof(d));
	ios::sync_with_stdio(0);
	cin >> n >> m >> s ;
	f[s] = 1;
	for (int i = 1; i <= m; i++)
	{
		cin >> u >> v >> a;
		Edge t(v, a);
		Node[u].push_back(t);
	}
	for (auto i : Node[s])
		d[i.v] = i.w;
	d[s] = 0;
	for (int i = 1; i <= n; i++)
	{
		int Min = 0x7fffffff, k = 0;
		for (int j = 1; j <= n; j++)
			if (d[j] < Min && !f[j])
			{
				Min = d[j];
				k = j;
			}
		if (k == 0)
			break;
		f[k] = 1;
		for (auto j : Node[k])
			if (d[j.v] > d[k] + j.w)
				d[j.v] = d[k] + j.w;
	}
	for (int i = 1; i <= n; i++)
		cout << ((d[i] == 0x3f3f3f3f) ? 0x7fffffff : d[i]) << ' ';
	return 0;
}
2024/8/13 00:01
加载中...