Pagini recente » Cod sursa (job #2758080) | Cod sursa (job #1284190) | Cod sursa (job #1740025) | Cod sursa (job #1355649) | Cod sursa (job #2571452)
#include <bits/stdc++.h>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n, m;
vector <pair<int,int> > v[50005];
int costDrum[50005];
void citire()
{
int x, y, c;
f >> n >> m;
for(int i = 1; i <= m; i++)
{
f >> x >> y >> c;
v[x].push_back(make_pair(y, c));
}
}
void dijkstra()
{
int costMinim = 1 << 30, nodMin = 0;
bool viz[50005]={0};
for(int i = 2; i <= n; i++)
costDrum[i] = costMinim;
for(int j = 1; j <= n; j++)
{
costMinim = 1 << 30;
for(int i = 1; i <= n; i++)
{
if(costDrum[i] < costMinim && !viz[i])
{
nodMin = i; costMinim = costDrum[i];
}
}
viz[nodMin] = 1;
for(int k = 0; k < v[nodMin].size(); k++)
{
int x = v[nodMin][k].first;
int cost = v[nodMin][k].second;
if(costDrum[x] > costDrum[nodMin] + cost)
costDrum[x] = costDrum[nodMin] + cost;
}
}
}
void afisare()
{
for(int i = 2; i <= n; i++)
if(costDrum[i] != 1<<30) g<<costDrum[i]<<' ';
else g<<0<<' ';
}
int main()
{
citire();
dijkstra();
afisare();
return 0;
}