Pagini recente » Cod sursa (job #2973052) | Cod sursa (job #850934) | Monitorul de evaluare | Cod sursa (job #23162) | Cod sursa (job #1842258)
#include<fstream>
#include<iostream>
#include<vector>
#define NMax 30005
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
int N,M,X,Y;
int Dist[NMax];
bool Use[NMax];
vector < pair <int,int> > G[NMax];
void Read()
{
fin>>N>>M>>X>>Y;
for(int i = 1 ; i <= M ; ++i)
{
int a,b,d; fin>>a>>b>>d;
G[a].push_back(make_pair(b,d));
G[b].push_back(make_pair(a,d));
}
}
void DFS(int Nod)
{
Use[Nod] = 1;
for(int i = 0 ; i < (int) G[Nod].size() ; ++i)
{
int Vecin = G[Nod][i].first;
int d = G[Nod][i].second;
if(!Use[Vecin])
{
if(Vecin < Nod) Dist[Vecin] = Dist[Nod] - d;
else Dist[Vecin] = Dist[Nod] + d;
DFS(Vecin);
}
}
}
void Solve()
{
DFS(X);
}
void Print()
{
fout<<Dist[Y]<<"\n";
}
int main()
{
Read();
Solve();
Print();
fin.close();
fout.close();
return 0;
}