40stp,RE请指教
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 100010;
int g[105][N], dist[N];
bool st[N];
int n, m,w;
int dijs(int k)
{
memset(st,false, sizeof(st));
memset(dist, 0x3f, sizeof(dist));
dist[w] = 0;
for (int i = 1;i <= n;i++)
{
int t = -1;
for (int j = 1;j <= n;j++)
{
if (!st[j] && (dist[j] < dist[t] || t == -1))
t = j;
}
for (int j = 1;j <= n;j++)
{
dist[j] = min(dist[j], dist[t] + g[t][j]);
st[t] = true;
}
}
if (dist[k] == 0x3f3f3f3f)return 2e31-1;
else return dist[k];
}
int main()
{
cin >> n >> m>>w;
memset(g, 0x3f, sizeof(g));
for (int i = 1;i <= m;i++)
{
int a, b, c;
cin >> a >> b >> c;
g[a][b] = min(g[a][b], c);
}
for(int i=1;i<=n;i++)
cout << dijs(i) <<" ";
return 0;
}