Pagini recente » Cod sursa (job #2355011) | Cod sursa (job #3181917) | Cod sursa (job #1986282) | Borderou de evaluare (job #2248045) | Cod sursa (job #2233066)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int NR=30005;
vector < int > v[NR];
vector < int > w[NR];
ifstream f("sate.in");
ofstream g("sate.out");
int n,m,x,y,sw=0;
long long drum[NR];
void citire (){
f>>n>>m>>x>>y;
for(int i=0;i<m;i++){
int a,b,c;
f>>a>>b>>c;
v[a].push_back(b);
v[b].push_back(a);
w[a].push_back(c);
w[b].push_back(c);}}
void DFS (int x){
for(unsigned int i=0;i<v[x].size();i++)
if(!drum[v[x][i]])
{
if(v[x][i]>x) drum[v[x][i]]=drum[x]+w[x][i];
else drum[v[x][i]]=drum[x]-w[x][i];
if(v[x][i]==y) {g<<drum[y]-1;sw=1; return;}
DFS(v[x][i]);if(sw) return;}}
int main ()
{ citire();
drum[x]=1;
DFS(x);}