Pagini recente » Istoria paginii runda/pregatire_oji_2022 | Cod sursa (job #3030191) | Cod sursa (job #1236715) | Cod sursa (job #81498) | Cod sursa (job #2033945)
#include <bits/stdc++.h>
#define inf 1000000000
using namespace std;
ifstream fin("bellmanford.in");
ofstream fout("bellmanford.out");
vector<pair<int,int> >L[50006];
int viz[50006], drum[50006];
priority_queue <pair<int, int> >q;
int n, m;
void Citire()
{
int i, x, y, z;
fin >> n >> m;
for(i = 1; i <= m; i++)
{
fin >> x >> y >> z;
L[x].push_back({y,z});
}
for(i = 2; i <= n; i++)
drum[i] = inf;
}
void Dijkstra()
{
int i, o, p, j;
q.push({0, 1});
while(!q.empty())
{
i = q.top().second;
q.pop();
if(!viz[i])
{
viz[i] = 1;
for(j = 0; j < L[i].size(); j++)
{
p = L[i][j].second;
o = L[i][j].first;
if(drum[o] > drum[i] + p)
{
drum[o] = drum[i] + p;
q.push({-drum[o], o});
}
}
}
}
for(i = 2; i <= n; i++)
if(drum[i] == inf)
fout << "0 ";
else fout << drum[i] << " ";
fout << "\n";
}
int main()
{
Citire();
Dijkstra();
return 0;
}