Cod sursa(job #863032)

Utilizator constantinsorinconstantin sorin constantinsorin Data 23 ianuarie 2013 10:38:27
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>

using namespace std;

ifstream f("graf.in");
ofstream g("graf.out");
const int INF=30000;
float a[50][50],d[50];
int s[100],t[100],n,r;

void cit();

int main()
{
	int i,j,poz;
float min;
	cit();
	s[r]=1;
	for(i=1;i<=n;i++)
	{
		d[i]=a[r][i];
		if(i!=r)
			if(d[i]<INF)t[i]=r;
	}
	for(i=1;i<=n-1;i++)
	{
		min=INF;
		for(j=1;j<=n;j++)
			if(s[j]==0)
				if(d[j]<min)
				{
					min=d[j];
					poz=j;
				}
				s[poz]=1;
		for(j=1;j<=n;j++)
			if(s[j]==0)
				if(d[j]>d[poz]+a[poz][j])
				{
					d[j]=d[poz]+a[poz][j];
					t[j]=poz;
				}
	}
	for(i=1;i<=n;i++)
		g<<d[i]<<' ';
	g<<'\n';
	g.close();
	return 0;
}

void cit()
{
	f>>n>>r;
	int i,j,k;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			if(i!=j)a[i][j]=INF;
	while(f>>i>>j>>k)
		a[i][j]=k;
	
}