Cod sursa(job #674048)

Utilizator torpedalaOltean Vlad torpedala Data 5 februarie 2012 14:28:06
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<iostream.h>
#include <cstdio>
#include<fstream.h>

int a[500][500],n,m,s[500],p[500],d[500];

	

void dijkstra(int x)
{
	int i,j,min,y;
	s[x]=1;
	
	
	for(i=1;i<=n;i++)
	{
		d[i]=a[x][i];
		
	
	if(i!=x && d[i]<2000)
		p[i]=x;
	}
	
		
	for(i=1;i<=n-1;i++)
	{
		for(j=1,min=2000;j<=n;j++)
		
			if(s[j]==0 && d[j]<min)
			{
				min=d[j];
				y=j;
			}
			s[y]=1;
			
			for(j=1;j<=n;j++)
			{
				if(s[j]==0&& d[j]>d[y]+a[y][j])
				{
					d[j]=d[y]+a[y][j];
					p[j]=y;
				}
			}
		
	}
	
	
	
	
}



int main()
{
	
freopen ("dijkstra.in","r",stdin);
freopen ("dijkstra.out","w",stdout);
	
 int i,x,y,p;

	
	cin>>n>>m;
	
	
	for(i=1;i<=n;i++)
		for(x=1;x<=n;x++)
			a[i][x]=2000;
	
	for(i=1;i<=m;i++)
	{
		cin>>x>>y>>p;
		a[x][y]=p;
	}
	
	
	

	
	dijkstra(1);
	
	for(i=2;i<=n;i++)
		cout<<d[i]<<" ";
	
return 0;
}