Cod sursa(job #1064589)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 22 decembrie 2013 01:36:28
Problema Sate Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 0.85 kb
#include<cstdio>
#include<bitset>
#include<vector>

using namespace std;

const int NMAX = 30001;

int N,M,X,Y;
vector<pair<int,int> > V[NMAX];
bool viz[NMAX];
int D[NMAX];

void DFS(int x)
{
    vector<pair<int,int> >::iterator it;
    viz[x]=1;
    for(it=V[x].begin();it!=V[x].end();it++)
    {
        if(viz[it->first]) continue;
        if(x < it->first) D[it->first]=D[x] + it->second;
        else D[it->first]=D[x] - it->second;
        if(D[Y]) return;
        DFS(it->first);
    }
}

int main()
{
    int a,b,c;
    freopen("sate.in","r",stdin);
    freopen("sate.out","w",stdout);
    scanf("%d%d%d%d",&N,&M,&X,&Y);
    for(;M;--M)
    {
        scanf("%d%d%d",&a,&b,&c);
        V[a].push_back(make_pair(b,c));
        V[b].push_back(make_pair(a,c));
    }
    DFS(X);
    printf("%d\n",D[Y]);
    return 0;
}