Pagini recente » Cod sursa (job #2341595) | Cod sursa (job #257241) | Cod sursa (job #412555) | Cod sursa (job #1927670) | Cod sursa (job #2668734)
#include<bits/stdc++.h>
using namespace std;
const int INF=INT_MAX;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n;typedef pair<int,int> iPair;
void shortestpath(int x, vector<pair<int,int>>graph[])
{priority_queue<iPair,vector<iPair>,greater<iPair>> pq;
vector<int> z(n+1, INF);
pq.push(make_pair(0,x)); z[x]=0;
while (!pq.empty())
{int u=pq.top().second;
pq.pop();
for(vector<pair<int,int>>::iterator i=graph[u].begin();i!=graph[u].end();i++)
{int v=(*i).first;
int w=(*i).second;
if(z[v]>z[u]+w)
{z[v]=z[u]+w;
pq.push(make_pair(z[v],v)); }}}
for(int i=2;i<=n;i++)
{if(z[i]==INF){z[i]=0;}
fout<<z[i]<<' ';}}
int main()
{int e,w,u,v; fin>>n>>e; vector<pair<int,int>>graph[n+1];
for(int i=0;i<e;i++){fin>>u>>v>>w; graph[u].push_back({v,w});}
shortestpath(1,graph);
return 0;
}