Pagini recente » Cod sursa (job #246739) | Cod sursa (job #2864856) | Cod sursa (job #2393849) | Cod sursa (job #2149563) | Cod sursa (job #1347331)
#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 ;
}