传送门
习题1
极大连通子图数量用prufer数列转化,用到了快速幂与大组合数计算。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define N 1e9+7
int m,n,mod = N;
ll power(ll a,ll b){
ll res=1;
while(b>0){
if(b&1)res=res*a%mod;
a=a*a%mod;
b>>=1;
}
return res;
}
ll C(ll n,ll m){
ll ans=1,flag=1;
for(ll i=1;i<=m;i++){
ans=ans*(n+1-i)%mod;
flag=flag*i%mod;
}
ans=ans*power(flag,mod-2)%mod;
return ans;
}
int main(){
cin>>n>>m;
cout<<C(n-1,m)*power(n,m)%mod<<endl;
return 0;
}