Pagini recente » Cod sursa (job #107556) | Cod sursa (job #1341483) | Cod sursa (job #403076) | Cod sursa (job #480564) | Cod sursa (job #1718591)
#include <bits/stdc++.h>
#define maxN 50005
using namespace std;
int n,m,i,j,x,y,z;
int d[maxN];
vector<pair<int,int> >v[maxN];
priority_queue<pair<int,int> ,vector<pair<int,int> >,greater<pair<int,int> > >heap;
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d %d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d %d %d",&x,&y,&z);
v[x].push_back(make_pair(y,z));
}
d[1]=0;
for(i=2;i<=n;i++)
d[i]=INT_MAX;
heap.push(make_pair(0,1));
while(!heap.empty())
{
x=heap.top().second;
heap.pop();
for(vector<pair<int,int> >::iterator it=v[x].begin();it!=v[x].end();it++)
if(d[it->first]>d[x]+it->second)
{
d[it->first]=d[x]+it->second;
heap.push(make_pair(d[it->first],it->first));
}
}
for(i=2;i<=n;i++)
if(d[i]!=INT_MAX)
printf("%d ",d[i]);
else printf("0 ");
return 0;
}