Cod sursa(job #2550918)

Utilizator ParutixLungeanu Razvan Parutix Data 19 februarie 2020 11:35:10
Problema A+B Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>
#define VAL 27041

using namespace std;

ifstream fin("arbrush.in");
ofstream fout("arbrush.out");

int N, M, Root, Len;
int T[VAL], Viz[VAL], Grad[VAL];
queue <int> Q;
vector <int> L[VAL];

void DFS(int K)
{
    Viz[K] = 1;
    for(auto i : L[K])
    {
        if(Viz[i] == 0)
        {
            DFS(i);
            Grad[K] += Grad[i];
        }
    }
}

int main()
{
    int i, x, y, j, Q, Nr;
    fin >> N >> M >> Root;
    for(i = 1 ; i < N ; ++i)
    {
        fin >> x >> y;
        L[x].push_back(y);
        L[y].push_back(x);
    }

    for(i = 1 ; i <= N ; ++i)
        Grad[i] = 1;

    DFS(Root);

    for(i = 1 ; i <= M ; ++i)
    {
        fin >> Nr;
        if(Grad[Nr] == 1) fout << 0 << "\n";
        else fout << Grad[Nr] * (Grad[Nr] - 1) / 2 << "\n";
    }



    return 0;
}