Pagini recente » Cod sursa (job #1423970) | Cod sursa (job #1363207) | Cod sursa (job #2967067) | Cod sursa (job #2048169) | Cod sursa (job #2861944)
#include <iostream>
#include <fstream>
#include <list>
#include <queue>
using namespace std;
typedef pair<int, int> sulyEsVeg;
int a = 2147483647;
int main()
{
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int csucsokSzama, elekSzama;
f >> csucsokSzama >> elekSzama;
list<sulyEsVeg> csucsok[csucsokSzama];
int x, y, z;
for (int i = 0; i < elekSzama; i++)
{
f >> x >> y >> z;
csucsok[x].push_back(make_pair(z, y));
csucsok[y].push_back(make_pair(z, x));
}
int tavolsag[csucsokSzama];
bool bejart[csucsokSzama] = {false};
fill_n(tavolsag, csucsokSzama, a);
priority_queue<sulyEsVeg, vector<sulyEsVeg>, greater<sulyEsVeg> > sor;
list<sulyEsVeg> :: iterator it;
sor.push(make_pair(0, 0));
tavolsag[0] = 0;
sulyEsVeg elem;
int suly, ertek;
while(!sor.empty())
{
elem = sor.top();
sor.pop();
if (bejart[elem.second] == true)
{
continue;
}
bejart[elem.second] = true;
for (it = csucsok[elem.second].begin(); it != csucsok[elem.second].end(); it++)
{
suly = it->first;
ertek = it->second;
if (suly + elem.first < tavolsag[ertek])
{
tavolsag[ertek] = suly + elem.first;
sor.push(make_pair(tavolsag[ertek], ertek));
}
}
}
for (int i = 1; i < csucsokSzama; i++)
{
if (tavolsag[i] == a)
{
g << 0 << " ";
}
else
{
g << tavolsag[i] << " ";
}
}
return 0;
}