Cod sursa(job #1401123)

Utilizator rraulinioRaul Mircea rraulinio Data 25 martie 2015 17:43:26
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("sate.in");
ofstream g("sate.out");
int N, M, p, x, y, a, b, viz[10];
struct distante {
	int a, b, p; //a (primul sat), b (al doilea sat), p (distanta dintre a si b)
} lista[50];

void citire(int &N, int &M, int &x, int &y, distante (&lista)[50]){ //citim nr de noduri, nr de relatii, x si y (satele la care vom calcula)
	//distanta, relatiile (pe care le retinem intr-un vector <<de tip struct, ce retina satul de la care plecam, satul
	//la care ne oprim, distanta intre cele doua)
	f >> N >> M >> x >> y;
	for (int i = 1; i <= M; i++){
		f >> a >> b >> p;
		lista[i].a = a, lista[i].b = b, lista[i].p = p;
	}
}

int main() {
	int ptotal = 0, k, z, i=1;
	citire(N, M, x, y, lista);
	k = x;
	z = x;
	while (i <= M) {
		if (lista[i].a == k && lista[i].b > k && viz[lista[i].b] != 1) {
			ptotal += lista[i].p;
			viz[lista[i].b] = 1;
			z = k;
			k = lista[i].b;
			i = 0;
		}
		else if (i==M) {
			k = z;
			ptotal -= lista[i].p;
			i = 0;
		}
		i++;
	}
	g << ptotal;
}