Cod sursa(job #2375342)

Utilizator pinbuAdi Giri pinbu Data 8 martie 2019 02:22:08
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>
#define N 50001
#define INF INT_MAX
using namespace std;

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

vector<pair<int,int>> v[N];
queue<int> q;
int d[N],n,m;
bool viz[N];

int main()
{
    int i,a,b,ct,vf;
    
    fin>>n>>m;
    
    for(i=1;i<=m;i++)
    {
        fin>>a>>b>>ct;
        v[a].push_back(make_pair(b,ct));
        v[b].push_back(make_pair(a,ct));
    }
    
    for(i=1;i<=n;i++)
        d[i]=INF;
    d[1]=0;
    q.push(1);
    
    while(!q.empty())
    {
        vf=q.front();
        q.pop();
        
        if(!viz[vf])
        {
            viz[vf]=true;
            for(auto s:v[vf])
                if(d[vf]+s.second<d[s.first])
                {
                    viz[s.first]=false;
                    d[s.first]=d[vf]+s.second;
                    q.push(s.first);
                }
        }
    }
    
    for(i=2;i<=n;i++)
        fout<<d[i]<<" ";
    return 0;
}