Pagini recente » Cod sursa (job #2856219) | Cod sursa (job #3256917) | Cod sursa (job #40051) | Cod sursa (job #512262) | Cod sursa (job #1053618)
#include <fstream>
using namespace std;
ifstream fin ("sate.in");
ofstream fout ("sate.out");
struct nod
{
int info,c;
nod *next;
}*l[100025];
void df(int , int , int &, int );
void add(int , int , int );
bool v[30001];
int main()
{
int n,m,x,y,c,r,a,b;
int i;
fin>>n>>m>>x>>y;
for(i=1;i<=m;i++)
{
fin>>a>>b>>c;
add(a,b,c);
}
df(x,0,r,y);
fout<<r;
return 0;
}
void df(int x, int s, int &r, int t)
{
if(x==t)
{
r=s;
return;
}
v[x]=true;
nod *n=l[x];
while(n!=NULL)
{
if(!v[n->info] && n->info>x)
df(n->info,s+n->c,r,t);
else if(!v[n->info] && n->info<x)
df(n->info,s-n->c,r,t);
n=n->next;
}
}
void add(int x, int y, int ct)
{
nod *n=new nod;
n->info=x;
n->c=ct;
n->next=l[y];
l[y]=n;
n=new nod;
n->info=y;
n->c=ct;
n->next=l[x];
l[x]=n;
}