Pagini recente » Cod sursa (job #2302072) | Cod sursa (job #2210210) | Cod sursa (job #2313200) | Cod sursa (job #2423110) | Cod sursa (job #3210559)
#include <iostream>
#include <fstream>
#include <queue>
#include <climits>
using namespace std;
ifstream beir("dijkstra.in");
ofstream kiir("dijkstra.out");
struct adat
{
int hossz = INT_MAX;
vector < pair <int,int> > sz;
};
vector <adat> x;
struct tav
{
int hova, hossz;
};
priority_queue <tav> t;
bool operator < (const tav& a, const tav& b)
{
return a.hossz > b.hossz;
}
int main()
{
int csp, cs1, cs2, kolt, el;
beir >> csp >> el;
x.resize(csp+1);
for(int i=1; i<=el; ++i)
{
beir >> cs1 >> cs2 >> kolt;
x[cs1].sz.push_back({cs2, kolt});
}
beir.close();
int kezd = 1;
t.push({1, 0});
x[kezd].hossz = 0;
tav akt;
while(!t.empty())
{
akt = t.top();
t.pop();
for(auto &e : x[akt.hova].sz)
{
if(x[e.first].hossz == 0)
{
continue;
}
if(x[e.first].hossz > (akt.hossz + e.second))
{
x[e.first].hossz = akt.hossz + e.second;
t.push({e.first, akt.hossz + e.second});
}
}
}
for(int i=2; i<=csp; ++i)
{
if(x[i].hossz == SHRT_MAX)
{
kiir << "0";
continue;
}
kiir << x[i].hossz << " ";
}
kiir.close();
return 0;
}