Cod sursa(job #1365039)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 27 februarie 2015 23:49:45
Problema Sate Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
#include <vector>
#define DIM 100100
using namespace std;

FILE *fin = fopen("sate.in" , "r");
FILE *fout= fopen("sate.out", "w");

int N, M, i, j, x, y, z, D[DIM];
int C[DIM], istart, ifinish;
int F[DIM], p, u, val, d;
vector < int > V[DIM];

void SetUp(){
     fscanf(fin, "%d%d%d%d", &N, &M, &istart, &ifinish);
     for(i = 1; i <= M; i ++){
          fscanf(fin, "%d%d%d", &x, &y, &z);
          V[x].push_back(y);
          V[x].push_back(z);
          V[y].push_back(x);
          V[y].push_back(-z);
     }
     p = 1; u = 1;
     C[p] = istart;
     return;
}

void BFS(){
     while(p <= u){
          val = C[p]; F[val] = 1;
          for(d = 0; d < V[val].size(); d += 2){
               if(F[V[val][d]] == 0){
                    D[V[val][d]] = D[val] + V[val][d+1];
                    u ++; C[u] = V[val][d];
               }
          }
          p ++;
     }
     fprintf(fout, "%d", D[ifinish]);
     return;
}

int main(){
     SetUp();
     BFS();
     return 0;
}