Pagini recente » Cod sursa (job #1905531) | Cod sursa (job #585748) | Cod sursa (job #1864470) | Cod sursa (job #2382221) | Cod sursa (job #1570413)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
const int N= 30001, M= 100025;
int lst[N], vf[2*M], urm[2*M], nr;
int v[2*M],n,m, X,Y, c[N], D;
void adauga( int x, int y,int d)
{
nr++;
vf[nr]=y;
urm[nr]=lst[x];
v[nr]=d;
lst[x]=nr;
}
void park(int p, int dist)
{
if(p==Y)
D=dist;
else
{
c[p]=1;
int i=lst[p];
while(i!=0)
{
// cout<<" p "<<p<<" i "<<i<<" y "<<vf[i];
int y=vf[i];
if(!c[y]){
c[y]=1;
if(y<p)
park(y,dist-v[i]);
else
park(y,dist+v[i]);
//c[y]--;
}
i=urm[i];
}
}
}
int main()
{
int x,y,d;
f>>n>>m>>X>>Y;
for(int i=1; i<=m; i++)
{
f>>x>>y>>d;
adauga(x,y,d);
adauga(y,x,d);
}
c[X]=1;
park(X,0);
g<<D;
}