Cod sursa(job #1053618)

Utilizator LizzardStanbeca Theodor-Ionut Lizzard Data 12 decembrie 2013 21:02:23
Problema Sate Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 0.98 kb
#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;
}