Cod sursa(job #1067777)

Utilizator krissu93FMI Tiugan Cristiana Elena krissu93 Data 27 decembrie 2013 15:10:38
Problema Sate Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

const int NMAX = 30001;
const int MMAX = 100025;
int n,m, start, finish, total = 0;
int viz[NMAX];
struct det{
  int nr, dist;
};
vector<det> sate[NMAX];
queue<int> coada;
void get_input(){
  ifstream in("sate.in");
  in>>n>>m>>start>>finish;
  cout<<start<<" "<<finish;
  for (int i = 0; i < m; ++i){
    int x,y,d;
    in>>x>>y>>d;
    det per;
    per.nr = y;
    per.dist = d;
    sate[x].push_back(per);
    per.nr = x;
    per.dist = -d;
    sate[y].push_back(per);
  }
  in.close();
}

int bfs(){
  coada.push(start);
  viz[start] = 1;
  while (!coada.empty() && !viz[finish]){
    int nod = coada.front();
    int sz = sate[nod].size();
    coada.pop();
    for (int i = 0; i < sz; ++i){
      if (!viz[ sate[nod][i].nr]) {
        viz [ sate[nod][i].nr] = viz[nod] + sate[nod][i].dist;
        coada.push(sate[nod][i].nr);
      }

    }

  }
  return viz[finish] - 1;

}

int main(){
  get_input();

  ofstream out("sate.out");
  out<<bfs();
  out.close();
  return 0;

}