Pagini recente » Cod sursa (job #476451) | Cod sursa (job #1933854) | Cod sursa (job #1834415) | Cod sursa (job #1917855) | Cod sursa (job #932739)
Cod sursa(job #932739)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
struct edge
{
int s,n,w;
};
int N,M;
vector<edge> a;
vector<int> dist,prec;
int main()
{
in >> N >> M;
for (int i = 0; i < M; ++i)
{
edge t;
in >> t.s >> t.n >> t.w;
a.push_back(t);
}
dist.resize(N+1,2e9); prec.resize(N+1);
dist[1] = 0;
bool gandalf = 1;
while (gandalf)
{
gandalf = 0;
for (int i = 0; i < a.size(); ++i)
if ( dist[ a[i].s ] + a[i].w < dist[ a[i].n ] ) {
dist[ a[i].n ]= dist[ a[i].s ] + a[i].w;
prec[ a[i].n ] = a[i].s;
gandalf = 1;
}
}
for (int i = 2; i < dist.size(); ++i)
if ( dist[i] != 2e9 ) out << dist[i] << " ";
else out << 0 << " ";
return 0;
}