Cod sursa(job #561178)

Utilizator victor_bla_blaDumitrescu Victor victor_bla_bla Data 18 martie 2011 23:08:24
Problema Algoritmul lui Dijkstra Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<cstdio>
#include<vector>
#define NMAX 50002
#define Inf 200000000
using namespace std;
//ifstream fin("dijkstra.in");
//ofstream fout("dijkstra.out");
int n,m,i,x,y,c[300000],j;
int main()
{
	freopen("dijkstra.in","rt",stdin);
	freopen("dijkstra.out","wt",stdout);
	scanf("%d %d\n",&n,&m);
	//fin>>n>>m;
	vector<int>d(n+1);
	vector<int>A[n+1];
	vector<int>cost[n+1];
	for (i=1;i<=n;i++)
		d[i]=Inf;
	d[1]=0;
	for (i=1;i<=m;i++)
	{
		//fin>>x>>y>>j;
		scanf("%d %d %d\n",&x,&y,&j);
		cost[x].push_back(j);
		A[x].push_back(y);
	}
	int ic,sc,z;
	ic=sc=1; c[ic]=1;
		while (ic<=sc)
			{
				z=c[ic];
				for (y=0;y<A[z].size();y++)
					if (d[z]+cost[z][y]<d[A[z][y]])
					{
						d[A[z][y]]=d[z]+cost[z][y];
						c[++sc]=A[z][y];
					}
				ic++;
			}
		for (i=2;i<=n;i++)
			if (d[i]!=Inf) printf("%d ",d[i]);//fout<<d[i]<<' ';
			else
				printf("%d ",0);//fout<<0<<' ';
//fout.close();
return 0;}