Cod sursa(job #970261)

Utilizator hiticas_abelhiticasabel hiticas_abel Data 6 iulie 2013 14:23:59
Problema Lazy Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <vector>
#include <bitset>
#include <queue>
#include <algorithm>
#include <stack>
#include <string.h>
using namespace std;

ifstream cin("plopi.in");
ofstream cout("plopi.out");

const int MAXN = 100005;

vector < pair<long long, long long> > Graph[MAXN];
long long N, rez;
long long d[MAXN], fr[2];

inline void dfs(int s)
{
    for(vector< pair<long long, long long > > :: iterator it = Graph[s].begin(); it != Graph[s].end(); ++ it)
        if(d[it->first] == -1)
        {
            d[it->first] = d[s] + it->second;
            ++fr[d[it->first]&1];
            dfs(it->first);
        }
}

int main()
{
    memset(d, -1, sizeof(d));
    cin >> N ;
    for(int i = 1 ; i != N ; ++ i)
    {
        int x, y, z;
        cin >> x >> y >> z;
        Graph[x].push_back(make_pair(y, z));
        Graph[y].push_back(make_pair(x, z));
    }
    d[1] = 0;
    ++fr[d[1]];
    dfs(1);
    cout << fr[0]*fr[1] << "\n";
    return 0;
}