Pagini recente » Cod sursa (job #3364099) | Cod sursa (job #3362273) | Cod sursa (job #3364098) | Cod sursa (job #3362402) | Cod sursa (job #3362822)
#include <bits/stdc++.h>
using namespace std;
const int INF=1e9;
int n,m;
vector<vector<pair<int,int>>> g;
vector<int> dijkstra(int src)
{
vector<int> dist(n+1,INF);
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> pq;
dist[src]=0;
pq.push({0,src});
while(!pq.empty())
{
int d=pq.top().first;
int u=pq.top().second;
pq.pop();
if(d>dist[u])
{
continue;
}
for(auto &e:g[u])
{
int v=e.first;
int w=e.second;
if(dist[u]+w<dist[v])
{
dist[v]=dist[u]+w;
pq.push({dist[v],v});
}
}
}
return dist;
}
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
cin>>n>>m;
g.resize(n+1);
for(int i=0;i<m;++i)
{
int u,v,w;
cin>>u>>v>>w;
g[u].push_back({v,w});
}
vector<int> dist=dijkstra(1);
for(int i=2;i<=n;++i)
{
if(dist[i]==INF)
{
cout<<0<<" ";
}
else
{
cout<<dist[i]<<" ";
}
}
cout<<'\n';
return 0;
}