Cod sursa(job #1373240)

Utilizator cristi103tiron cristian cristi103 Data 4 martie 2015 17:28:49
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <iostream>
#include <queue>
#include <cstring>
#define x first
#define y second
#define mp make_pair
#define pb push_back
using namespace std ;
typedef unsigned long long ull ;
typedef pair <int, int> Pair ;
const int NMAX = 100024 ;
const int INF = 0x3f3f3f3f ;
ifstream fin("sate.in") ;
ofstream fout("sate.out") ;
int N, M, vis[NMAX] ;
vector <Pair> V[NMAX] ;
queue <int> Q ; int X, Y ;
inline void BFS()
{ vector <int> sol(N + 1, INF) ;
 for(int i = 0 ; i < N ; ++ i)
    sol[i] = INF ; sol[X] = 0 ;
 Q.push(X) ;
 while(!Q.empty() || sol[Y] == INF)
    { int nod = Q.front() ; Q.pop() ;
 for(int i = 0 ; i < V[nod].size() ; ++ i)
    { if(sol[V[nod][i].y] > sol[nod] + V[nod][i].x)
    { sol[V[nod][i].y] = sol[nod] + V[nod][i].x ; Q.push(V[nod][i].y) ; } } }
 fout << sol[Y]<< '\n' ; }
 int main()
 {
     fin >> N >> M >> X >> Y ;
     for(int i = 1 ; i <= M ; ++ i)
        { int XX, YY ;
     int cos ; fin >> XX >> YY >> cos;
     V[XX].pb(mp(cos, YY)) ;
     V[YY].pb(mp(-cos, XX)) ; }
     BFS() ;
      fin.close() ;
      fout.close() ;
      return 0 ;
      }