Pagini recente » Cod sursa (job #1666107) | Cod sursa (job #1187664) | Cod sursa (job #1667405) | Cod sursa (job #210217) | Cod sursa (job #2711033)
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n, m;
int drum[50005];
vector <pair <int, int>> Muchii[50006];
priority_queue <pair <int, int>, vector <pair<int, int>>, greater <pair <int, int>>> q;
void dijkstra()
{
while(!q.empty())
{
pair <int, int> poz = q.top();
q.pop();
for(auto k : Muchii[poz.first])
if(drum[k.first] > k.second + drum[poz.first])
{
drum[k.first] = k.second + drum[poz.first];
q.push(make_pair(k.first, k.second + drum[poz.first]));
}
}
}
int main()
{
f >> n >> m;
for(int i = 1; i <= m; i++)
{
int x, y, cost;
f >> x >> y >> cost;
Muchii[x].push_back(make_pair(y, cost));
Muchii[y].push_back(make_pair(x, cost));
}
for(int i = 1; i <= n; i++)
drum[i] = INF;
q.push(make_pair(1, 0));
drum[1] = 0;
dijkstra();
for(int i = 2; i <= n; i++, g << " ")
if(drum[i] == INF)
g << 0;
else
g << drum[i];
return 0;
}