#include<bits/stdc++.h>
using namespace std;
vector < pair<int,int> > g[30000];
queue<int> path;
int dis[30000];
void spfa()
{
path.push(1);
while(!path.empty())
{
int now = path.front();path.pop();
int s = g[now].size();
for(int i = 0;i < s;i++)
{
// cout<<dis[g[now][i].first]<<'*';
if(dis[g[now][i].first] > dis[now] + g[now][i].second)
{
dis[g[now][i].first] = dis[now] + g[now][i].second;
path.push(g[now][i].first);
}
}
// cout<<now<<' ';
}
}
int main()
{
int n,m,a,b,v;
cin>>n>>m;
for(int i = 0;i < m;i++)
{
scanf("%d %d %d",&a,&b,&v);
g[a].push_back(pair<int,int>(b,v));
}
memset(dis,10005,sizeof(dis));
int s = g[1].size();
dis[1] = 0;
spfa();
for(int i = 2;i <= n;i++)
{
printf("%d\n",dis[i]);
}
}
仅做学习记录