提出 #1881769


ソースコード 拡げる

#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int mo=1000000007;
int t,b[5005],x,y,n,X,Z,s[5005]; LL f[5005],F[5005],w[5005][5005];
vector <int> a[5005];
LL po(LL x,int y){
	LL z=1;
	for (;y;y>>=1,x=x*x%mo)
	if (y&1) z=z*x%mo;
	return z;
}
void dfs(int x,int y){
	s[x]=1; int z=0;
	for (int i=0;i<a[x].size();++i)
	if (a[x][i]!=y) dfs(a[x][i],x),s[x]+=s[a[x][i]],z=max(z,s[a[x][i]]);
	z=max(z,n-s[x]);
	if (z<Z) Z=z,X=x;
}
LL C(int x,int y){
	return f[x]*F[y]%mo*F[x-y]%mo;
}
int main(){
	scanf("%d",&n); f[0]=1;
	for (int i=1;i<=n;++i) f[i]=f[i-1]*i%mo;
	F[n]=po(f[n],mo-2);
	for (int i=n-1;~i;--i) F[i]=F[i+1]*(i+1)%mo;
	for (int i=1;i<n;++i){
		scanf("%d%d",&x,&y);
		a[x].push_back(y);
		a[y].push_back(x);
	}
	Z=n+10; dfs(1,0);
	for (int i=1;i<=n;++i)
	if (s[i]*2==n){
		printf("%lld\n",f[s[i]]*f[s[i]]%mo);
		return 0;
	}
	for (int i=0;i<a[X].size();++i) b[++t]=s[a[X][i]];
	for (int i=1;i<=t;++i) if (b[i]>s[X]) b[i]=n-s[X];
	b[++t]=1; X=0; w[0][0]=1;
	for (int i=1;i<=t;++i){
		for (int k=0;k<=b[i];++k)
		for (int j=0;j<=X;++j)
		(w[i][j+k]+=w[i-1][j]*C(b[i],k)%mo*C(b[i],k)%mo*f[k]%mo)%=mo;
		X+=b[i];
	}
	for (int i=0;i<=X;++i) (w[t][i]*=f[n-i])%=mo;
	for (int i=X;~i;--i)
		for (int j=i+1;j<=X;++j) (w[t][i]-=w[t][j]*C(j,i)%mo)%=mo;
	--t;
	for (int i=0;i<n;++i) (w[t][i]*=f[n-i-1])%=mo;
	for (int i=n-1;~i;--i)
		for (int j=i+1;j<n;++j) (w[t][i]-=w[t][j]*C(j,i)%mo)%=mo;
	printf("%lld\n",((w[t][0]+w[t+1][0])%mo+mo)%mo);
	return 0;
}

提出情報

提出日時
問題 F - Squirrel Migration
ユーザ cyz666
言語 C++14 (GCC 5.4.1)
得点 800
コード長 1528 Byte
結果 AC
実行時間 464 ms
メモリ 194560 KiB

コンパイルエラー

./Main.cpp: In function ‘int main()’:
./Main.cpp:24:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d",&n); f[0]=1;
                ^
./Main.cpp:29:22: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d",&x,&y);
                      ^

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 800 / 800
結果
AC × 4
AC × 41
セット名 テストケース
Sample 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 1_30.txt, 1_31.txt, 1_32.txt, 1_33.txt, 1_34.txt, 1_35.txt, 1_36.txt
ケース名 結果 実行時間 メモリ
0_00.txt AC 1 ms 384 KiB
0_01.txt AC 1 ms 384 KiB
0_02.txt AC 1 ms 384 KiB
0_03.txt AC 1 ms 384 KiB
1_00.txt AC 271 ms 1024 KiB
1_01.txt AC 3 ms 896 KiB
1_02.txt AC 183 ms 640 KiB
1_03.txt AC 286 ms 768 KiB
1_04.txt AC 271 ms 768 KiB
1_05.txt AC 288 ms 768 KiB
1_06.txt AC 320 ms 3584 KiB
1_07.txt AC 320 ms 3584 KiB
1_08.txt AC 393 ms 97152 KiB
1_09.txt AC 464 ms 194560 KiB
1_10.txt AC 359 ms 97152 KiB
1_11.txt AC 351 ms 97152 KiB
1_12.txt AC 318 ms 3328 KiB
1_13.txt AC 266 ms 768 KiB
1_14.txt AC 275 ms 768 KiB
1_15.txt AC 283 ms 768 KiB
1_16.txt AC 296 ms 768 KiB
1_17.txt AC 307 ms 1024 KiB
1_18.txt AC 308 ms 1152 KiB
1_19.txt AC 312 ms 1536 KiB
1_20.txt AC 312 ms 3456 KiB
1_21.txt AC 322 ms 3584 KiB
1_22.txt AC 321 ms 5376 KiB
1_23.txt AC 324 ms 9216 KiB
1_24.txt AC 331 ms 19328 KiB
1_25.txt AC 349 ms 39808 KiB
1_26.txt AC 344 ms 48000 KiB
1_27.txt AC 366 ms 64384 KiB
1_28.txt AC 391 ms 97152 KiB
1_29.txt AC 1 ms 384 KiB
1_30.txt AC 1 ms 384 KiB
1_31.txt AC 3 ms 640 KiB
1_32.txt AC 3 ms 640 KiB
1_33.txt AC 3 ms 640 KiB
1_34.txt AC 3 ms 640 KiB
1_35.txt AC 3 ms 640 KiB
1_36.txt AC 3 ms 640 KiB