Pagini recente » Cod sursa (job #695222) | Cod sursa (job #2929337) | Cod sursa (job #2382088) | Cod sursa (job #2305734) | Cod sursa (job #655295)
Cod sursa(job #655295)
#include<fstream>
using namespace std;
int A[3000][3000],vizitat[3000],T[3000];
int drum[3000],k=0,n,m,d,x,y;
void Citire()
{
int i,j;
fstream f("sate.in",ios::in);
f>>n>>m>>x>>y;
while(f>>i>>j>>d)
A[i][j]=A[j][i]=d;
f.close();
}
void Inversare(int nod)
{
if(nod!=0)
{
Inversare(T[nod]);
drum[k++]=nod;
}
}
void DFS(int nod)
{
int k;
vizitat[nod]=1;
for(k=1; k<=n; k++)
if(A[nod][k]!=0 && vizitat[k]==0)
{
T[k]=nod;
DFS(k);
}
}
void Afisare()
{
fstream g("sate.out",ios::out);
int i,lungime=0;
for(i=0; i<k; i++)
if(drum[i]<drum[i+1])
lungime=lungime+A[drum[i]][drum[i+1]];
else
lungime=lungime-A[drum[i]][drum[i+1]];
g<<lungime;
g.close();
}
int main()
{
Citire();
DFS(x);
if(T[y]!=0)
Inversare(y);
Afisare();
return 0;
}