Cod sursa(job #1579832)

Utilizator tc_iuresiures tudor-cristian tc_iures Data 25 ianuarie 2016 09:25:52
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

const int Nmax = 30005;

vector<pair<int,int> > G[Nmax];
int N, M, X, Y;
int dist;

void read()
{
    ifstream f("sate.in");
    f >> N >> M >> X >> Y;
    for(int i = 0; i < M; i ++)
    {
        int x, y, z;
        f >> x >> y >> z;
        G[x].push_back(make_pair(y,z));
        G[y].push_back(make_pair(x,z));
    }
    f.close();
}

void solve(int Node, int Parent)
{
        int distNodeToParent;
        if(Parent != 0)
        {
               for(int i = 0; i < G[Node].size(); i ++)
                {
                    if(G[Node][i].first == Parent)
                    {
                        distNodeToParent = G[Node][i].second;
                    }
                }
        }
        else
        {
            distNodeToParent = 0;
        }
        if(Node > Parent)
        {
            dist = dist + distNodeToParent;
        }
        else
        {
            dist = dist - distNodeToParent;
        }
        for(int i = 0; i < G[Node].size(); i ++)
        {
            if(G[Node][i].first != Parent)
            {
                solve(G[Node][i].first, Node);
            }
        }

}

void print()
{
    ofstream g("sate.out");
    g << dist;
    g.close();
}

int main()
{
    read();
    solve(X, 0);
    print();
    return 0;
}