Pagini recente » Cod sursa (job #1030494) | Cod sursa (job #530757) | Cod sursa (job #2640303) | Cod sursa (job #76312) | Cod sursa (job #1408922)
#include <stdio.h>
#include <vector>
#include <queue>
#define pp pair<int,int>
#define inf 100000000
using namespace std;
int n,m,x,y,c,s,i,d[50005],z;
vector< pp > G[50005];
priority_queue<pp ,vector<pp>, greater<pp> > Q;
int main()
{
freopen ("dijkstra.in","r",stdin);
freopen ("dijkstra.out","w",stdout);
scanf("%i%i",&n,&m);
s=1;
for (i=1;i<=n;i++) d[i]=inf;
Q.push(make_pair(0,s));
for(i=1;i<=m;i++)
{
scanf("%i%i%i",&x,&y,&c);
G[x].push_back(pp(y,c));
}
d[s] = 0;
pp p;
while(!Q.empty())
{
p = Q.top();
Q.pop();
x=p.second;
if (d[x]!=p.first) continue;
z = G[x].size();
for(i=0;i<z;i++)
{
y = G[x][i].first;
c = G[x][i].second;
if(d[y] > d[x] + c)
{
d[y] = d[x] + c;
Q.push(make_pair(d[y],y));
}
}
}
for(i=2;i<=n;i++)
{
if (d[i]!=inf) printf("%i",d[i]);
else printf("0");
if (i<n) printf(" ");
}
return 0;
}