Cod sursa(job #2669714)

Utilizator MihailprunaruMihail Prunaru Mihailprunaru Data 7 noiembrie 2020 18:16:37
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#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> paor;
void shortestpath(int x, vector<paor>graph[])
{priority_queue<paor,vector<paor>,greater<paor>> pq;
vector<int> z(n+1, INF);
pq.push(make_pair(0,x)); z[x]=0;
while (!pq.empty())
{int u=pq.top().second,c=pq.top().first;
pq.pop();
if(c==z[u])
{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;
}