Pagini recente » Cod sursa (job #1843159) | Cod sursa (job #2979499) | Cod sursa (job #276634) | Cod sursa (job #1752958) | Cod sursa (job #2462439)
#include <fstream>
#include <set>
#include <iostream>
#include <vector>
#include <cstring>
#define pb push_back
using namespace std;
const int N = 50005, oo = 1e9;
int n, dist[N];
vector < pair<int, int> > L[N];
set <int> s;
set <int> :: iterator it;
void Read ()
{
int m;
ifstream fin ("dijkstra.in");
fin >> n >> m;
int i, x, y, cost;
for (i = 1; i <= m; i++)
{
fin >> x >> y >> cost;
L[x].pb({y, cost});
}
}
void Dijkstra ()
{
for (int i = 2; i <= n; i++)
dist[i] = oo;
s.insert(1);
while (!s.empty())
{
it = s.begin();
cout << *it << " ";
int x = *it;
s.erase(s.begin());
if (L[x].size())
for (auto i : L[x])
{
if (dist[i.first] > dist[x] + i.second)
{
dist[i.first] = dist[x] + i.second;
s.insert(i.first);
}
}
}
ofstream fout ("dijkstra.out");
for (int i = 2; i <= n; i++)
{
if (dist[i] == oo) dist[i] = 0;
fout << dist[i] << " ";
}
}
int main()
{
Read();
Dijkstra();
return 0;
}