Pagini recente » Cod sursa (job #1820063) | Cod sursa (job #1556301) | Cod sursa (job #3229330) | Cod sursa (job #852012) | Cod sursa (job #2712752)
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
ifstream fi("sate.in");
ofstream fo("sate.out");
int N,M;
int X,Y;
vector <pair <int,int> > vec[30005];
int parcurs[30001];
int dist[30001];
void DFS(int x,int value)
{
if(vec[x].size()>0)
for(int i=0;i<=vec[x].size()-1;i++)
{
if(parcurs[vec[x][i].first]==0)
{
parcurs[vec[x][i].first]=1;
if(vec[x][i].first>x)
{
dist[vec[x][i].first]=value+vec[x][i].second;
DFS(vec[x][i].first,dist[vec[x][i].first]);
}else
{
dist[vec[x][i].second]=abs(value-vec[x][i].second);
DFS(vec[x][i].first, dist[vec[x][i].second]);
}
}
}
}
int main()
{
fi>>N>>M;
fi>>X>>Y;
int x,y,D;
for(int i=1;i<=M;i++)
{
fi>>x>>y>>D;
vec[x].push_back(make_pair(y,D));
vec[y].push_back(make_pair(x,D));
}
parcurs[X]=1;
DFS(X,0);
if(dist[y]!=0)
fo<<abs(dist[Y]-dist[X]);
return 0;
}