Cod sursa(job #2378062)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 11 martie 2019 16:56:44
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
#define pii pair<int,int>
#define vii vector<pii>
#define N first
#define V second
#define INF 0xfffffff
#define MAXN 50010 
using namespace std;

int n,m;
int Vl[MAXN];
vii A[MAXN];

void Dijkstra(int s){
	priority_queue <pii,vector<pii>,greater<pii> > pq;
	pq.push({s,0});
	for(int i=1;i<=n;i++)
		if(s!=i)
			Vl[i]=INF;
		else Vl[i]=0;
	while(!pq.empty()){
		pii c=pq.top();
		if(c.V>Vl[c.N])continue;
		for(int i=0;i<A[c.N].size();i++){
			if(Vl[c.N]+A[c.N][i].V<Vl[A[c.N][i].N]){
				Vl[A[c.N][i].N]=Vl[c.N]+A[c.N][i].V;
				pq.push({A[c.N][i].N,Vl[c.N]+A[c.N][i].V});
			}
		}
		pq.pop();
	}
}

int main(){
	ifstream cin("dijkstra.in");
	ofstream cout("dijkstra.out");
	cin>>n>>m;
	for(int i=0;i<n;i++){
		int a,b,d;
		cin>>a>>b>>d;
		A[a].push_back({b,d});
	}
	Dijkstra(1);
	for(int i=2;i<=n;i++){
		cout<<Vl[i]<<' ';
	}
	return 0;
}