Pagini recente » Cod sursa (job #364835) | Monitorul de evaluare | Cod sursa (job #1244501) | Cod sursa (job #1203089) | Cod sursa (job #1253630)
#include<fstream>
#include<iostream>
#include<iomanip>
using namespace std;
int ind_stiva,n,m,s[10000],viz[10000],a[10000][10000],i,j,k,x,y,dist,ok=0,q,w,satf;
ofstream g("sate.out");
ifstream f("sate.in");
void intro(int m, int n)
{
int d;
for(i=1;i<=m;i++)
{
f>>x>>k>>d;
if(k<x)
{
a[k][x]=d;
a[x][k]=-d;
}
else
{
a[x][k]=-d;
a[k][x]=d;
}
}
}
void push(int j)
{
s[ind_stiva++]=j;
}
int pop()
{
return(s[ind_stiva--]);
}
int urmator(int i)
{
int l;
for(l=1;l<=m;l++)
if(a[i][l]!=0 && viz[l]==0 &&l!=i)
return l;
return 0;
}
int main()
{
f>>m>>n>>j>>satf;
intro(n,m);
for(i=1;i<=n;i++)
viz[i]=0;
viz[j]=1;
push(j);
do{
if(ok==0)
k=urmator(j);
if(k==satf && ok==0)
{
ok=1;
j=k;
push(j);
}
if(k>0 && ok==0)
{
viz[k]=1;
push(k);
j=k;
}
else
{
ind_stiva--;
dist=dist+a[j][s[ind_stiva-1]];
if(!ok)
j=pop();
else
j=s[ind_stiva-1];
}
}while(ind_stiva>=0);
g<<dist;
g.close();
return 0;
}