Cod sursa(job #706192)

Utilizator andrici_cezarAndrici Cezar andrici_cezar Data 5 martie 2012 18:44:16
Problema Algoritmul lui Dijkstra Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#include <vector>
#define maxn 50001
using namespace std;

struct nodulet {long d; long lg;} arc;

vector < nodulet > A[maxn];

long x, i, N, K, C[maxn];
bool viz[maxn];

void BFS(long nod) {
	viz[nod] = true;
	
	for (long i = 0; i < A[nod].size(); ++i) {
		if (C[ A[nod][i].d ] == 0 || C[ A[nod][i].d ] > C[nod] + A[nod][i].lg) {
			C[ A[nod][i].d ] = C[nod] + A[nod][i].lg;
			BFS(A[nod][i].d);
		}
	}
}

int main() {
	freopen("dijkstra.in","r",stdin);
	freopen("dijkstra.out","w",stdout);
	
		scanf("%ld %ld", &N, &K);
		
		for (i = 0; i < K; ++i) {
			scanf("%ld %ld %ld", &x, &arc.d, &arc.lg);
			A[x].push_back(arc);
		}
		C[1] = 0;
		BFS(1);
		
		for (i = 2; i <= N; ++i) {
			printf("%ld ", C[i]);
		}
		printf("\n");
	
	return 0;
}