Pagini recente » Cod sursa (job #3121731) | Cod sursa (job #1689857) | Cod sursa (job #482633) | Cod sursa (job #643652) | Cod sursa (job #1647946)
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
const int Inf=250000000;
typedef pair <int,int> ii;
priority_queue < ii , vector<ii> , greater<ii> > pq;
vector <ii> G[50000];
int dist[50000];
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
int n,m,a,b,c,i,u,d,v;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
G[a].push_back(ii(b,c));
}
for(i=2;i<=n;i++) dist[i]=Inf;
pq.push(ii(0,1));
while(!pq.empty())
{
d=pq.top().first;
u=pq.top().second;
pq.pop();
for(i=0;i<G[u].size();i++)
{
v=G[u][i].first;
d=G[u][i].second;
if(dist[v]>dist[u]+d)
{
dist[v]=dist[u]+d;
pq.push(ii(dist[v],v));
}
}
}
for(i=1;i<=n;i++) if(dist[i]==Inf) dist[i]=0;
for(i=2;i<=n;i++) printf("%d ",dist[i]);
return 0;
}