Pagini recente » Cod sursa (job #599405) | Cod sursa (job #2312203) | Cod sursa (job #330570) | Cod sursa (job #3312274) | Cod sursa (job #496419)
Cod sursa(job #496419)
//
#include <fstream>
#include <queue>
#include <vector>
#include <limits>
using namespace std;
#define NMax 50001
int N, M;
vector< pair<int, int> > W[NMax];
vector<int> D;
queue<int> Q;
void read()
{
int u, v, c;
ifstream fin;
fin.open("dijkstra.in", fstream::in);
fin >> N >> M;
while (M--)
{
fin >> u >> v >> c;
W[u].push_back(pair<int, int>(v, c));
}
fin.close();
}
void solve()
{
int u, v, c;
for (int i = 0; i <= N; ++i)
D.push_back(INT_MAX);
Q.push(1);
D[1] = 0;
while (!Q.empty())
{
u = Q.front();
Q.pop();
for (vector< pair<int, int> >::iterator t = W[u].begin(); t != W[u].end(); ++t)
{
v = t->first;
c = t->second;
if (D[v] > D[u] + c)
{
D[v] = D[u] + c;
Q.push(v);
}
}
}
}
void write()
{
ofstream fout("dijkstra.out");
for (int i = 2; i <= N; ++i)
fout << D[i] << ' ';
fout << '\n';
fout.close();
}
int main()
{
read();
solve();
write();
return 0;
}