Pagini recente » Cod sursa (job #2866211) | Cod sursa (job #2866261) | Cod sursa (job #2847129) | Cod sursa (job #1517139)
#include <cstdio>
#include <queue>
#include <limits.h>
#include <vector>
#define MAX 50000000
using namespace std;
FILE *f=fopen("dijkstra.in","r");
FILE *g=fopen("dijkstra.out","w");
int n,m,D[50010],nrr;
vector< pair<int,int> >v[50010];
priority_queue < pair<int,int> > q;
int main()
{
pair<int,int> aux;
int i,x,y,c,nod,cost;
fscanf(f,"%d %d",&n,&m);
for(i=2;i<=n;i++)D[i]=MAX;
for(i=1;i<=m;i++)
{
fscanf(f,"%d %d %d",&x,&y,&c);
v[x].push_back(make_pair(c,y));
}
q.push(make_pair(0,1));
int numar;
while(!q.empty())
{
aux=q.top();
q.pop();
nod=aux.second;
cost=-aux.first;
numar=v[nod].size();
for(i=0;i<numar;i++)
{
aux=v[nod][i];
if(aux.first+cost<D[aux.second])
{
D[aux.second]=aux.first+cost;
q.push(make_pair(-D[aux.second],aux.second));
}
}
}
for(i=2;i<=n;i++)
if(D[i]==MAX)fprintf(g,"0 ");else fprintf(g,"%d ",D[i]);
fclose(f);
fclose(g);
return 0;
}