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;
}