提出 #3882393


ソースコード 拡げる

#include <stdio.h>  
#include <algorithm>  
#include <assert.h>
#include <bitset>
#include <cmath>  
#include <complex>  
#include <deque>  
#include <functional>  
#include <iostream>  
#include <limits.h>  
#include <map>  
#include <math.h>  
#include <queue>  
#include <set>  
#include <stdlib.h>  
#include <string.h>  
#include <string>  
#include <time.h>  
#include <unordered_map>  
#include <unordered_set>  
#include <vector>  

#pragma warning(disable:4996)  
#pragma comment(linker, "/STACK:336777216")  
using namespace std;

#define mp make_pair  
#define Fi first  
#define Se second  
#define pb(x) push_back(x)  
#define szz(x) ((int)(x).size())  
#define rep(i, n) for(int i=0;i<n;i++)  
#define all(x) (x).begin(), (x).end()  
#define ldb ldouble  

typedef unsigned int uint;
typedef tuple<int, int, int> t3;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ldb;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
typedef pair <ll, int> pli;
typedef pair <db, db> pdd;

int IT_MAX = 1 << 19;
const ll MOD = 1000000007;
const int INF = 0x3f3f3f3f;
const ll LL_INF = 0x3f3f3f3f3f3f3f3f;
const db PI = acos(-1);
const db ERR = 1e-10;

const int MX = 5005;
const int MM = 1000000007;

ll dp[MX][MX];
ll F[MX*2], I[MX*2], FI[MX*2], C[MX];
int cnt[MX];
vector<int> T[MX];
int N;

int dfs(int x, int p){
	int tdp[MX] = {};
	cnt[x] = 1;
	dp[x][1] = 1;
	for(int c : T[x]){
		if(c == p) continue;
		dfs(c, x);
		for(int i = 0; i <= cnt[x] + cnt[c]; i++) tdp[i] = 0;
		for(int i = 0; i <= cnt[x]; i++){
			for(int j = 0; j <= cnt[c]; j++){
				tdp[i+j] = (tdp[i+j] + dp[x][i] * dp[c][j]) % MM;
				if(j%2 == 0){
					tdp[i] = (tdp[i] + MM - dp[x][i] * dp[c][j] % MM * C[j/2] % MM) % MM;
				}
			}
		}
		for(int i = 0; i <= cnt[x] + cnt[c]; i++) dp[x][i] = tdp[i];
		cnt[x] += cnt[c];
	}
}

int main()
{
	scanf("%d", &N);
	F[0] = I[1] = FI[1] = 1;
	for(int i = 1; i <= 2*N; i++) F[i] = F[i-1] * i % MM;
	for(int i = 2; i <= 2*N; i++){
		I[i] = (MM - MM/i) * I[MM%i] % MM;
		FI[i] = FI[i-1] * I[i] % MM;
	}
	ll m = 1;
	for(int i = 1; i <= N; i++){
		m = I[2] * m % MM;
		C[i] = F[i*2] * FI[i] % MM * m % MM;
	}
	for(int i = 1; i < N; i++){
		int a, b;
		scanf("%d%d", &a, &b);
		T[a].push_back(b);
		T[b].push_back(a);
	}
	dfs(1, -1);
	ll ans = 0;
	for(int i = 2; i <= N; i++) ans = (ans + dp[1][i] * C[i/2]) % MM;
	printf("%lld\n", ans);
}

提出情報

提出日時
問題 E - Ribbons on Tree
ユーザ zigui
言語 C++14 (GCC 5.4.1)
得点 900
コード長 2508 Byte
結果 AC
実行時間 212 ms
メモリ 275072 KiB

コンパイルエラー

./Main.cpp: In function ‘int main()’:
./Main.cpp:86:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &N);
                 ^
./Main.cpp:100:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d", &a, &b);
                        ^

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 900 / 900
結果
AC × 4
AC × 34
セット名 テストケース
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
ケース名 結果 実行時間 メモリ
0_00.txt AC 1 ms 512 KiB
0_01.txt AC 1 ms 384 KiB
0_02.txt AC 1 ms 512 KiB
0_03.txt AC 1 ms 512 KiB
1_00.txt AC 1 ms 384 KiB
1_01.txt AC 212 ms 275072 KiB
1_02.txt AC 116 ms 194176 KiB
1_03.txt AC 116 ms 193920 KiB
1_04.txt AC 115 ms 193920 KiB
1_05.txt AC 118 ms 193792 KiB
1_06.txt AC 203 ms 193792 KiB
1_07.txt AC 178 ms 233088 KiB
1_08.txt AC 165 ms 221824 KiB
1_09.txt AC 151 ms 215680 KiB
1_10.txt AC 141 ms 208768 KiB
1_11.txt AC 191 ms 193664 KiB
1_12.txt AC 176 ms 189568 KiB
1_13.txt AC 166 ms 193792 KiB
1_14.txt AC 148 ms 193664 KiB
1_15.txt AC 126 ms 193664 KiB
1_16.txt AC 117 ms 193792 KiB
1_17.txt AC 117 ms 193920 KiB
1_18.txt AC 115 ms 193792 KiB
1_19.txt AC 114 ms 193920 KiB
1_20.txt AC 115 ms 194048 KiB
1_21.txt AC 117 ms 194304 KiB
1_22.txt AC 117 ms 194432 KiB
1_23.txt AC 118 ms 194944 KiB
1_24.txt AC 119 ms 195328 KiB
1_25.txt AC 125 ms 200960 KiB
1_26.txt AC 167 ms 219776 KiB
1_27.txt AC 159 ms 232320 KiB
1_28.txt AC 170 ms 237568 KiB
1_29.txt AC 192 ms 252928 KiB