Pagini recente » Profil crisandan | Profil biapitic | Profil GauGau | Cod sursa (job #296917) | Cod sursa (job #2799740)
#include <bits/stdc++.h>
using namespace std;
const int oo=20000000, Nmax=50000;
vector<pair<int,int>>g[Nmax+5];
int n;
int D[Nmax+5];
vector<bool>Use;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
void read()
{
int m,x,y,Cost;
fin>>n>>m;
Use=vector<bool>(n+1);
for(int i=1; i<=m; i++)
{
fin>>x>>y>>Cost;
g[x].push_back(make_pair(y,Cost));
}
}
void dijkstra()
{
for(int i=2; i<=n; i++)
D[i]=oo;
for(int i=1; i<=n; i++)
{
int Nod, Min=oo;
for(int i=1; i<=n; i++)
if(D[i]<Min&&Use[i]==0)
Min=D[i],Nod=i;
Use[Nod]=1;
for(int i=0; i<(int)g[Nod].size(); i++)
{
int Vecin=g[Nod][i].first,Cost=g[Nod][i].second;
D[Vecin]=min(D[Vecin], D[Nod]+Cost);
}
}
}
void print()
{
for(int i=2; i<=n; i++)
{
if(D[i]==oo)
D[i]=0;
fout<<D[i]<<' ';
}
fout<<'\n';
}
int main()
{
read();
dijkstra();
print();
return 0;
}