#include<bits/stdc++.h>
using namespace std;
struct edge{
int u, v, w;
} e[100005];
int n, m, s;
int f[100005];
int main()
{
scanf("%d%d%d", &n, &m, &s);
for(int i = 1; i <= m; i++)
scanf("%d%d%d", &e[i].u, &e[i].v, &e[i].w);
memset(f, 0x3f, sizeof f);
f[s] = 0;
for(int i = 1; i < n; i++)
for(int j = 1; j <= m; j++)
f[e[j].v] = min(f[e[j].v], f[e[j].u] + e[j].w);
for(int i = 1; i <= n; i++)
printf("%d ", f[i]);
return 0;
}
记录
样例能过,求助dalao