Pagini recente » Cod sursa (job #3003603) | Cod sursa (job #2407311) | Cod sursa (job #2923695) | Cod sursa (job #1705767) | Cod sursa (job #2397303)
#include <iostream>
#include <queue>
#include <fstream>
#include <vector>
#include <limits.h>
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
vector<int> graph[250001],graphC[250001];
int dist[250001],dist_initiale[250001],viz[250001];
int min_dist(int dist[],int N,int viz[])
{
int dist_minim=INT_MAX,ii;
for(int i=1; i<=N; i++)
if(viz[i]==0 && dist[i]<dist_minim)
{
ii=i;
dist_minim=dist[i];
}
return ii;
}
int main()
{
int N,M,x,y,d,c;
fin>>N>>M;
for(int i=2; i<=N; i++)
dist[i]=INT_MAX;
for(int i=0; i<M; i++)
{
fin>>x>>y>>c;
graph[x].push_back(y);
graphC[x].push_back(c);
}
for(int i=1; i<=N; i++)
{
int xmin=min_dist(dist,N,viz);
viz[xmin]=1;
for(int j= 0; j<graph[xmin].size(); j++)
if(dist[xmin]+graphC[xmin][j]<dist[graph[xmin][j]])
dist[graph[xmin][j]]=dist[xmin]+graphC[xmin][j];
}
for(int i=2; i <=N; i++)
if(dist[i]==INT_MAX)
fout<<0<<' ';
else
fout<<dist[i]<<' ';
return 0;
}