Cod sursa(job #702633)

Utilizator define_AriMiculas Armand Ariel define_Ari Data 2 martie 2012 01:34:57
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<iostream>
#include<fstream>
using namespace std;
const int inf=2000;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
long n,m,a[5000][5000],t[50000];
void citire()
{
	f>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			if(i!=j)
				a[i][j]=inf;
	long x,y,c;
	while(f>>x>>y>>c)
		a[x][y]=c;
}
void dijkstra()
{
	int min,pos,ok=0;
	while(!ok)
	{
	min=inf;
	for(int i=2;i<=n;i++)
		if(a[1][i]<min&&!t[i])
		{
			min=a[1][i];
			pos=i;
		}
		t[pos]=1;
		if(min!=inf)
			for(int i=2;i<=n;i++)
				if(!t[i]&&a[1][i]>a[1][pos]+a[pos][i])
					a[1][i]=a[1][pos]+a[pos][i];
				else;
		else
			ok=1;
	}
}
int main()
{
	citire();
	dijkstra();
	for(int i=2;i<=n;i++)
		if(a[1][i]==inf)
			g<<"0 ";
		else
			g<<a[1][i]<<" ";
}