Pagini recente » Cod sursa (job #1614347) | Cod sursa (job #2136550) | Cod sursa (job #797012) | Cod sursa (job #33893) | Cod sursa (job #1757037)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#define oo 1<<30
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int N,M,L[50005],V[50005];
vector <pair <int,int> > nod[50005];
void read()
{
fin>>N>>M;
for(int i=1;i<=N;i++)
{
int s,f,d;
fin>>s>>f>>d;
nod[s].push_back(make_pair(f,d));
}
}
void Dijkstra()
{
for(int i=2;i<=N;i++)
L[i]=oo;
for(int k=1;k<=N;k++)
{
int Min=oo;
int Nod;
for(int i=1;i<=N;i++)
if(L[i]<Min && !V[i])
{
Min=L[i];
Nod=i;
}
V[Nod]=1;
for(int i=0;i<(int)nod[Nod].size();i++)
{
int v=nod[Nod][i].first,C=nod[Nod][i].second;
L[v]=min(L[v],L[Nod]+C);
}
}
}
void print()
{
for(int i=2;i<=N;i++)
{
if(L[i]==oo) L[i]=0;
fout<<L[i]<<" ";
}
}
int main()
{
read();
Dijkstra();
print();
return 0;
}