Cod sursa(job #1974024)

Utilizator vic2002Melinceanu Victor vic2002 Data 26 aprilie 2017 17:35:37
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<bits/stdc++.h>
#define inf INT_MAX
using namespace std;
long n,m,i,j,c[1001][1001],x,y,p,d[1001],viz[1001],dmin,vfmin;
int main()
{
	ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0);
	freopen("dijkstra.in","r",stdin);
	freopen("dijkstra.out","w",stdout);
	cin>>n>>m;
	for(i=1;i<=n;i++)for(j=i+1;j<=n;j++)c[j][i]=c[i][j]=inf;
	for(i=1;i<=m;i++)
	{
		cin>>x>>y>>p;
		c[x][y]=p;
	}
	for(i=1;i<=n;i++)d[i]=c[1][i];
	viz[1]=1;
	for(i=1;i<=n-1;i++)
	{
		dmin=inf;
		for(j=1;j<=n;j++)if(d[j]<dmin && !viz[j])dmin=d[j],vfmin=j;
		viz[vfmin]=1;
		for(j=1;j<=n;j++)if(!viz[j] && d[j]>dmin+c[vfmin][j])d[j]=dmin+c[vfmin][j];
	}
	for(i=2;i<=n;i++)cout<<d[i]<<" ";
	return 0;
}