求助,第3个点WA
查看原帖
求助,第3个点WA
701221
Chr0n1CleC楼主2022/6/27 09:40

rt,代码如下:

#include<stdio.h>
#include<vector> 
using namespace std;

struct node{int v, w;};
int n, m, s;
vector < node > e[10009];

long long k[10009];
bool vis[10009];

int main()
{
	scanf("%d%d%d", &n, &m, &s);
	int x, y, z;
	for (int i = 1;i <= m;i ++)
	{
		scanf("%d%d%d", &x, &y, &z);
		node jz;
		jz.v = y, jz.w = z;
		e[x].push_back(jz);
	}
	for (int i = 1;i <= n;i ++)
		k[i] = 1ll * 0 + 1 << 31 - 1;
	k[s] = 0;
	for (int i = 1;i <= n;i ++)
	{
		int u = 10008, mn = 1e9;
		for (int j = 1;j <= n;j ++)
			if (!vis[j] && k[j] < mn)
				mn = k[j], u = j;
		vis[u] = true;
		for (int ed = 0;ed < e[u].size();ed ++)
		{
			int v = e[u][ed].v, w = e[u][ed].w;
			if (k[v] > k[u] + w)
				k[v] = k[u] + w;
		}
	}
	for (int i = 1;i <= n;i ++)
		printf("%lld ", k[i]);
	
	return 0;
}
2022/6/27 09:40
加载中...