Cod sursa(job #891745)

Utilizator OpportunityVlad Negura Opportunity Data 25 februarie 2013 19:31:42
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <vector>
using namespace std;

#define inf 0xffffff

ifstream fi("dijkstra.in");
ofstream fo("dijkstra.out");

long a[50005],n,m;
vector < pair <int,int> > g[50005];

void readData(){
	fi >> n >> m;
	for (long i=1; i<=n; i++){
		long a,b,c;
		fi >> a >> b >> c;
		g[a].push_back(make_pair(b,c));
	}
}

void solve(){

	for (long i=1; i<=n; i++) a[i]=inf;
	a[1]=0;
	
	for (long i=1; i<n; i++){
		vector< pair<int, int> >::iterator it;
		for (it=g[i].begin(); it!=g[i].end(); ++it){
			if (a[i]+it->second < a[it->first]) a[it->first]=a[i]+it->second; 
		}
	}
	
}

void writeData(){
	for (long i=2; i<=n; i++) fo << (a[i] < inf ? a[i] : 0) << " ";
}

int main(){
	
	readData();
	solve();
	writeData();
	
	return 0;
}