Pagini recente » Cod sursa (job #1660743) | Cod sursa (job #1743348) | Cod sursa (job #2584576) | Cod sursa (job #2477975) | Cod sursa (job #1974032)
#include <bits/stdc++.h>
using namespace std;
ifstream F("dijkstra.in");
ofstream G("dijkstra.out");
const int inf = 1 << 30;
int d[100005], z[100005], x, y, c, p, n, m, a;
vector <pair<int, int> > graf[100005];
priority_queue <pair<int, int> > pq;
int main()
{
F >> n >> m;
for(int i = 0; i < m; ++ i)
{
F >> x >> y >> c;
graf[x].push_back({y, c});
graf[y].push_back({x, c});
}
for(int i = 2; i <= n; ++ i)
d[i] = inf;
pq.push({0, 1});
while(!pq.empty())
{
a = pq.top().second;
pq.pop();
if(z[a]) continue;
z[a] = 1;
for(auto i : graf[a])
{
if(d[a] + i.second < d[i.first])
{
d[i.first] = d[a] + i.second;
pq.push({-d[i.first], i.first});
}
}
}
for(int i = 2; i <= n; ++ i)
d[i] == inf ? G << "-1 " : G << d[i] << " ";
return 0;
}