Cod sursa(job #2683936)

Utilizator evelina.nitoiuNitoiu Evelina evelina.nitoiu Data 12 decembrie 2020 11:26:28
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.33 kb
#include <iostream>
#include <queue>
#include <vector>
#include <fstream>
#define inf 2000000000

using namespace std;

//priority_queue <pair<int,int>,vector<pair<int,int>>,greater <pair<int,int>>> q;
const int NMAX=250005;
//const int inf=
bool vis[NMAX];
int dist[NMAX];
vector <pair<int,int>> mu[NMAX];
int n,m,s,a,b,c;

 ifstream in("dijkstra.in");
 ofstream out("dijkstra.out");

void dijkstra(int start){
    priority_queue <pair <int, int>> q;
    q.push({0,start});
    dist[start]=0;
    while(!q.empty()){
        pair<int,int> x=q.top();
        q.pop();
        if(vis[x.second]==false){
            vis[x.second]=1;
            for(int i=0;i<mu[x.second].size();i++)
                if(dist[mu[x.second][i].first]>x.first+mu[x.second][i].second)
                    {
                        q.push({x.first+mu[x.second][i].second,mu[x.second][i].first});
                        dist[mu[x.second][i].first]=x.first+mu[x.second][i].second;
                    }
        }
    }
}

int main()
{
    in>>n>>m;
    for(int i=1;i<=m;i++){
        in>>a>>b>>c;
        mu[a].push_back({b,c});
    }
    for(int i=1;i<=n;i++)
        dist[i]=inf;
    dijkstra(1);
    for(int i=2;i<=n;i++)
        if(dist[i]!=inf)
            out<<dist[i]<<" ";
        else
            out<<0<<" ";

    return 0;
}