Cod sursa(job #963091)

Utilizator phobosJustin Lim Kai Ze phobos Data 16 iunie 2013 15:39:53
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<fstream>
#include<cstdio>
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
typedef pair<int,int> ii;
const int mx=1e9;
int main(){
	ifstream in("dijkstra.in");
	ofstream out("dijkstra.out");
	int M,N,a,b,c,dist[50010];
	for(int i=0;i<50010;i++)dist[i]=mx;
	in>>N>>M;
	vector<ii> ad[50010];
	for(int i=0;i<N;i++){
		in>>a>>b>>c;
		ad[a].push_back(ii(c,b));
		ad[b].push_back(ii(c,a));
	}	
	priority_queue<ii,vector<ii>,greater<ii> > pq;
	pq.push(ii(0,1));
	dist[1]=0;
	while(!pq.empty()){
		ii u=pq.top();
		pq.pop();
		int d=u.first,v=u.second;
		if(d==dist[v]){
			for(int i=0;i<ad[v].size();i++){
				int c=ad[v][i].first,s=ad[v][i].second;
				if(dist[s]>dist[v]+c){
					dist[s]=dist[v]+c;
					pq.push(ii(dist[s],s));
				}
			}
		}
	}
	for(int i=2;i<=N;i++)
		out<<dist[i]<<" ";
	return 0;
}