Cod sursa(job #956624)

Utilizator moonRadu Chichi moon Data 3 iunie 2013 15:42:33
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>
#include<iostream>
#define INF 1<<3
using namespace std;
int a[5000][5000],n,m,x,y,c,vis[5000],d[5000];
int main()
{
  ifstream f("dijkstra.in");
  ofstream g("dijkstra.out");
  
  f>>n>>m;
  
  for(int i=0;i<m;i++)
  {
	  f>>x>>y>>c;
	  a[x-1][y-1] = c;
  }
  
  for(int i=1;i<n;i++)
	  d[i] = INF;
  
  d[0] = 0;
  int counter = n;
  
  
  while(counter)
  {
    int min = INF;
	int minI;
    for(int i=0;i<n;i++)
      if(d[i] < min && !vis[i])
	  {
		min = d[i];
		minI = i;
	  }
	vis[minI] = 1;
	
	
	for(int i=0;i<n;i++)
	{
	  if(a[minI][i] != 0)
	  {
		if(d[minI]+a[minI][i] < d[i])
		  d[i] = d[minI]+a[minI][i];
	  }
	}
  
    counter--;
  }
  
  for(int i=1;i<n;i++)
	  g<<d[i]<<" ";
}