Pagini recente » Cod sursa (job #2902028) | Cod sursa (job #1461510) | Cod sursa (job #270442) | Cod sursa (job #1909684) | Cod sursa (job #1373240)
#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 ;
}