結論としては、この問題は「これまでに訪れた頂点のうち が書かれたものの個数」を持たせたBITを用意し、頂点 からDFSをしつつ逐次更新することで解くことができます。
頂点 を根とする部分木に含まれる を満たす頂点 の個数頂点 を「出る」までに訪れた を満たす頂点 の個数頂点 に「入る」までに訪れた を満たす頂点 の個数 となり、これは前述のBITで計算できます。
なお、MojaCoder上ではDFSを再帰で実装するとstack overflowを起こしてしまう可能性が高いため、stackを用いるなどの対策が必要です。