求助,就头尾AC
查看原帖
求助,就头尾AC
550471
Ice_function楼主2022/8/29 15:11

传送门

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=50002,mod=1e9+7;

int n,r,k,a[N],ask[N],ans[N];vector <int> g[N];

int dfs(int x)
{
	int val=0;
	for (int e : g[x])
	{
		
		val+=dfs(e);
	}
	val++;
	a[x]=val;
	return val;
}

signed main()
{
	cin>>n>>r>>k;
	for (int i=1,u,v;i<=n-1;i++) cin>>u>>v,g[u].push_back(v);
	dfs(r);
	for (int i=1;i<=k;i++) cin>>ask[i];
	for (int i=1;i<=n;i++)
	{
		int val=0,o=0;
		for (int e : g[i])
		{
			o+=a[e];
		}
		for (int e : g[i])
		{
			val+=a[e]*(o-a[e]);
		}
		ans[i]=val+a[i]*2-1;
	}
	for (int i=1;i<=k;i++) cout<<ans[ask[i]]<<endl;
	return 0;
}
2022/8/29 15:11
加载中...