Pagini recente » Istoria paginii runda/runda_1_biscuiti_cu_lacuste | Cod sursa (job #1811237) | Cod sursa (job #1566449) | Cod sursa (job #215052) | Cod sursa (job #2274162)
#include <bits/stdc++.h>
#define Dim 30007
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int N,M,a,b,c,X,Y;
int Dcost[Dim];
bool viz[Dim];
vector < pair < int , int > > Vf[Dim];
queue < int > C;
void BFS()
{
C.push(X);
viz[X]=1;
while(!C.empty())
{
int nod_pred=C.front();
int dist=Dcost[nod_pred];
C.pop();
for(int i=0;i<Vf[nod_pred].size();i++)
{
int nod_cur=Vf[nod_pred][i].first;
int cost=Vf[nod_pred][i].second;
if(!viz[nod_cur])
{ //cout<<nod_pred<<" "<<nod_cur<<'\n';
viz[nod_cur]=1;
C.push(nod_cur);
if(nod_cur<nod_pred)
Dcost[nod_cur]=(dist-cost);
else
Dcost[nod_cur]=(dist+cost);
if(nod_cur==Y) return;
}
}
}
}
int main()
{
f>>N>>M>>X>>Y;
for(int i=1;i<=M;i++)
{
f>>a>>b>>c;
Vf[a].push_back(make_pair(b,c));
Vf[b].push_back(make_pair(a,c));
}
BFS();
g<<Dcost[Y];
return 0;
}