Pagini recente » Cod sursa (job #429457) | Cod sursa (job #2155413) | Cod sursa (job #2815177) | Cod sursa (job #3227651) | Cod sursa (job #2712756)
#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[30005];
int dist[30005];
void DFS(int x,int value)
{
for(int i=0;i<vec[x].size();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);
fo<<dist[Y];
return 0;
}