33

include

include <stdio.h>

include

using namespace std;
typedef long long ll;

const int mod=1e9+7;
const int maxn=1e5+9;
vector<ll>g[maxn];
ll f[maxn],son[maxn];</ll>

void dfs(int x, int fa);
ll qpow(ll x,ll y,ll mod);
ll inv(ll a,ll p);

int main()
{
int t,n,m,x,y;
ll a,b;
cin>>t;
while(t--){
cin>>n>>m;
for(int i=1; i<=n; i++){
g[i].clear();
}
for(int i=1; i<n; i++){
cin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
}
if(m==1){
cout<<1<<endl;
}else{
dfs(1,0);
a=1;
b=0;
for(int i=f[m]; i!=0; i=f[i]){
int temp=(i!=1);
a=ainv(son[i]+temp,mod)%mod;
b=binv(son[i]+temp,mod)%mod;
b=(b+a
inv(son[i]-1+temp,mod)%mod
(son[i]-1)%mod)%mod;
}
//cout<<(int)((a+b)%mod)<<endl;
printf("%d\n",(int)((a+b)%mod));
}
}
return 0;
}

void dfs(int x, int fa)
{
son[x]=0;
f[x]=fa;
for(int i=0; i<g[x].size(); i++){
int u=g[x][i];
if(u==fa){
continue;
}
dfs(u,x);
son[x]++;
}
}

ll qpow(ll x,ll y,ll mod)
{
ll res=1; x%=mod;
while(y){
if(y&1)res=resx%mod;
x=x
x%mod;
y>>=1;
}
return res;
}

ll inv(ll a,ll p)
{
return qpow(a,p-2,p)%p;
}

全部评论

相关推荐

01-12 20:31
东北大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务