我不是标题党,我只是想让dalao来指点下我,我能有什么怀心思qwq
#include<bits/stdc++.h>
using namespace std;
vector <int> q[100010];
int n,r,m;
int v[100010];
int fa[100010];
long long sum[100010],ans;
int dfs(int x,int a){
sum[x]=1;
fa[x]=a;
for(int i=0;i<=q[x].size()-1;i++){
if(q[x][i]==a) continue;
sum[x]+=dfs(q[x][i],x);
}
return sum[x];
}
int su(int x){
if(v[x]) return v[x];
int anss=0;
for(int i=1;i<=q[x].size()-1;i++)
for(int j=0;j<i;j++){
if(q[x][i]==fa[x]||q[x][j]==fa[x])
continue;
anss+=sum[q[x][i]]*sum[q[x][j]];
}
v[x]=anss;
return anss;
}
int main(){
scanf("%d%d%d",&n,&r,&m);
for(int i=1;i<n;i++){
int a,b;
scanf("%d%d",&a,&b);
q[a].push_back(b);
q[b].push_back(a);
}
dfs(r,0);
int a;
for(int i=1;i<=m;i++){
ans=0;
scanf("%d",&a);
ans=(1+(sum[a]-1)*2)%(1000000007);
ans=(ans+su(a)*2)%(1000000007);
cout<<ans<<endl;
}
}
这东西提交上去为啥会RE第一个点