Cod sursa(job #1826137)

Utilizator eilerGabriel-Ciprian Stanciu eiler Data 10 decembrie 2016 10:52:20
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#define INF 250001
#include <vector>
using namespace std;

int N, M;
vector <vector <int> > C;
vector <int> t, d;
vector <bool> s;

int main(){
  int i, j, k, dist;

  ifstream fin ("dijkstra.in");
  fin >> N >> M;
  C.resize(N, vector <int>(N, INF));
  t.resize(N);
  s.resize(N);
  d.resize(N);
  for (k=0; k<M; k++){
    fin >> i >> j >> dist;
    i--; j--;
    C[i][j]=C[j][i]=dist;
  }
  fin.close();

  for (i=1; i<N; i++)
    d[i]=C[i][0];
  d[0]=0;
  t[0]=-1;
  for (k=0; k<N-1; k++){
    dist=INF;
    for (j=0; j<N; j++)
      if (dist>d[j] && s[j]==false){
        i=j;
        dist=d[j];
      }
    s[i]=true;
    for (j=0; j<N; j++)
      if (d[j]>d[i]+C[i][j]){
        d[j]=d[i]+C[i][j];
        t[j]=i;
      }
  }

  ofstream fout ("dijkstra.out");
  for (i=1; i<N; i++)
    fout << d[i] << ' ';
  fout << '\n';
  fout.close();

  return 0;
}