Cod sursa(job #2231553)

Utilizator AvramDanielAvram Daniel AvramDaniel Data 14 august 2018 21:38:05
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>
using namespace std;

int n,m,harta[50010],a,b,c;
vector<int> v[50010],d[50010];
void bfs()
{
    for(int i=2;i<=n;i++) harta[i]=-1;
    queue <int> q;
    harta[1]=0;
    q.push(1);
    int curr,adj;
    while(!q.empty())
          {
              curr=q.front();
              q.pop();
              for(int i=0;i<v[curr].size();i++)
              {
                  adj=v[curr][i];
                  if(harta[adj]>harta[curr]+d[curr][i] || harta[adj]==-1)
                  {
                      q.push(adj);
                      harta[adj]=harta[curr]+d[curr][i];
                  }
              }
          }
}

int main()
{
    ifstream cin("dijkstra.in");
    ofstream cout("dijkstra.out");
    cin>>n>>m;
    for(;m;m--)
    {
        cin>>a>>b>>c;
        v[a].push_back(b);
        d[a].push_back(c);
        v[b].push_back(a);
        d[b].push_back(c);
    }
    bfs();
    for(int i=2;i<=n;i++)
        cout<<harta[i]<<' ';
    return 0;
}