Pagini recente » Cod sursa (job #229491) | Cod sursa (job #1873768) | Cod sursa (job #1317180) | Cod sursa (job #2176647) | Cod sursa (job #2857012)
#include <bits/stdc++.h>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
const int N = 50005;
const int oo = 9999999999;
int X,Y,Z;
int n,m,d[N];
int viz[N];
vector<pair<int,int>>a[N];
struct cmp{
bool operator()(int x,int y)
{
return d[x] > d[y];
}
};
priority_queue<int,vector<int>,cmp>H;
void dijkstra()
{
int vecin, nod_curent, cost;
for(int i = 1 ; i <= n; i++)
d[i] = oo;
d[1] = 0;
H.push(1);
viz[1] = true;
while(!H.empty())
{
nod_curent = H.top();
viz[nod_curent] = false;
H.pop();
for(int i = 0 ; i < a[nod_curent].size(); i++)
{
vecin = a[nod_curent][i].first;
cost = a[nod_curent][i].second;
if(d[vecin] > d[nod_curent] + cost)
{
d[vecin] = d[nod_curent] + cost;
if(viz[vecin] == false)
{
H.push(vecin);
viz[vecin] = true;
}
}
}
}
}
int main()
{
int X,Y,C;
in >> n >> m;
for(int i = 1; i <= m; i++)
{
in >> X >> Y >> C;
/// a[X].push_back(make_pair(Y,C));
a[X].push_back({Y,C});
}
dijkstra();
for(int i = 2 ; i <= n ;i++)
if(d[i] == oo)
out << 0 << " ";
else
out << d[i] << " ";
return 0;
}