Pagini recente » Cod sursa (job #3244833) | Cod sursa (job #907148) | Cod sursa (job #937659) | Cod sursa (job #567075) | Cod sursa (job #2280207)
#include <bits/stdc++.h>
#define oo 100000000
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
vector < vector < pair < int , int > > > Graf;
vector <int> dijkstra(int node , int n)
{
vector <int> dist(n,oo);
dist[node]=0;
priority_queue<pair <int , int> , vector < pair <int ,int> > , greater <pair <int , int> > > PQ;
PQ.push({0,node});
while(!PQ.empty()){
int node2=PQ.top().second;
int cost=PQ.top().first;
PQ.pop();
if(cost != dist[node2]) continue;
for(auto x: Graf[node2])
{
if(cost + x.second < dist[x.first]){
dist[x.first] = cost + x.second;
PQ.push({dist[x.first],x.first});
}
}
}
return dist;
}
int main()
{
int n,m;
int x,y,z;
f>>n>>m;
Graf.resize(n);
for(int i=1;i<=m;i++)
{
f>>x>>y>>z;
Graf[x-1].push_back({y-1,z});
}
vector <int> dist=dijkstra(0,n);
// dijkstra(1,n);
for(int i=1;i<n;i++)
{
if(dist[i]==oo)
g<<"0 ";
else
g<<dist[i]<<" ";
}
return 0;
}