Pagini recente » Cod sursa (job #1132138) | Cod sursa (job #2695554) | Cod sursa (job #1667114) | Cod sursa (job #1244697) | Cod sursa (job #1401123)
#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;
}