Pagini recente » Cod sursa (job #850808) | Cod sursa (job #2612955) | Cod sursa (job #1833822) | Cod sursa (job #150453) | Cod sursa (job #403128)
Cod sursa(job #403128)
#include <cstdio>
#include <vector>
using namespace std;
vector < pair <int,int> > a[50009];
int n,m,v[50009],cost[50009];
bool ma[50009];
void bfs()
{
int r=1,p;
v[1]=1;
for (int p=1;p<=r;ma[v[p]]=false,++p)
for (int i=0;i<a[v[p]].size();++i)
if (!cost[a[v[p]][i].first]||cost[a[v[p]][i].first]>cost[v[p]]+a[v[p]][i].second)
{
cost[a[v[p]][i].first]=cost[v[p]]+a[v[p]][i].second;
if (!ma[a[v[p]][i].first])
{
ma[a[v[p]][i].first]=1;
v[++r]=a[v[p]][i].first;
}
}
}
int main()
{
freopen ("dijkstra.in","r",stdin);
freopen ("dijkstra.out","w",stdout);
scanf("%d%d",&n,&m);
int x,y,z;
for (int i=1;i<=m;++i)
{
scanf("%d%d%d",&x,&y,&z);
a[x].push_back(make_pair(y,z));
}
bfs();
for (int i=2;i<=n;++i)
printf("%d ",cost[i]);
printf("\n");
return 0;
}