Cod sursa(job #1599278)

Utilizator Liviu98Dinca Liviu Liviu98 Data 13 februarie 2016 19:03:16
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <stdio.h>
#include <vector>
#define NMax 30005
using namespace std;
vector<pair<int,int> > Graf[NMax];
int N,M,x,y,z,X,Y,sol[100031];
bool mark[NMax];

void Read()
{
    scanf("%d%d%d%d",&N,&M,&X,&Y);
    for(int i=1;i<=M;i++)
    {
        scanf("%d%d%d",&x,&y,&z);
        Graf[x].push_back(make_pair(y,z));
        Graf[y].push_back(make_pair(x,-z));
    }
}

void DFS(int nod)
{
    mark[nod]=true;
    for(vector<pair<int,int> >::iterator it=Graf[nod].begin();it!=Graf[nod].end();it++)
        if(mark[it->first]==false)
        {
            sol[it->first]=sol[nod]+it->second;
            DFS(it->first);
            if(it->first==Y)
                return;
        }
}

int main()
{
    freopen("sate.in","r",stdin);
    freopen("sate.out","w",stdout);
    Read();
    DFS(X);
    printf("%d ",sol[Y]);
}