Pagini recente » Cod sursa (job #766274) | Cod sursa (job #1808395) | Cod sursa (job #1032848) | Cod sursa (job #2300421) | Cod sursa (job #2550918)
#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;
}