Pagini recente » Cod sursa (job #1331146) | Cod sursa (job #310150) | Cod sursa (job #2846675) | Cod sursa (job #2649189) | Cod sursa (job #1570408)
#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
{
if(!c[p])
{
c[p]=1;
int i=lst[p];
while(i!=0)
{
cout<<" p "<<p<<" i "<<i<<" y "<<vf[i];
int y=vf[i];
//c[y]++;
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);
}
park(X,0);
g<<D;
}