Pagini recente » Cod sursa (job #3125232) | Cod sursa (job #3262124) | Cod sursa (job #1356632) | Cod sursa (job #2773072) | Cod sursa (job #3125929)
#include <bits/stdc++.h>
using namespace std;
const int inf = INT_MAX;
int n,m,c,m1,m2;
vector<vector<pair<int,int>>>adj(50010);
vector<bool>viz(50010);
vector<int>dist(50010,inf);
void dijkstra(int nod)
{
dist[nod] = 0;
priority_queue<pair<int,int>>pq;
pq.push({0,nod});
viz[nod] = 1;
while(!pq.empty())
{
int el = pq.top().second;
int cost = pq.top().first;
viz[el] = 0;
pq.pop();
for(int i = 0;i < adj[el].size();i++)
{
int vecin = adj[el][i].first;
int cc = adj[el][i].second;
if(dist[el] + cc < dist[vecin])
{
dist[vecin] = dist[el] + cc;
if(viz[vecin] == 0)
{
viz[vecin] = 1;
pq.push({-dist[vecin],vecin});
}
}
}
}
}
int main()
{
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
cin>>n>>m;
for(int i = 1; i <= m; i++)
{
cin>>m1>>m2>>c;
adj[m1].push_back(make_pair(m2,c));
}
dijkstra(1);
for(int i = 2;i <= n;i++)
{
if(dist[i] != inf)
cout<<dist[i]<<" ";
else
cout<<0<<" ";
}
}