Pagini recente » Cod sursa (job #1752655) | Cod sursa (job #701464) | Cod sursa (job #2073693) | Cod sursa (job #2792891) | Cod sursa (job #1002960)
#include<fstream>
#include<vector>
#define oo (1<<30)
#define NMAX 50010
using namespace std;
ifstream in ("dijkstra.in");
ofstream out("dijkstra.out");
int N,M,d[NMAX];
vector <pair <int,int> > v[NMAX];
bool vizitat[NMAX];
void citire () {
int i,c,x,y;
in>>N>>M;
for(i=1;i<=M;i++) {
in>>x>>y>>c;
v[x].push_back(make_pair(y,c));
}
in.close();
}
void solve() {
int i,j,k,nod,min;
for(i=2;i<=N;i++)
d[i]=oo;
for(j=1;j<=N;j++) {
min=oo;
for(k=1;k<=N;k++){
if(d[k]<min && vizitat [k]==0){
min=d[k];
nod=k;
}
}
vizitat[nod]=1;
for(i=0;i<v[nod].size();i++)
if(d[v[nod][i].first]>d[nod]+v[nod][i].second)
d[v[nod][i].first]=d[nod]+v[nod][i].second;
}
}
void afisare() {
int i;
for(i=2;i<=N;i++)
if(d[i]==oo)
out<<0<<" ";
else
out<<d[i]<<" ";
out<<'\n';
out.close();
}
int main () {
citire();
solve();
afisare();
return 0;
}