제출 #1090276

#제출 시각아이디문제언어결과실행 시간메모리
1090276Gourougourou무제 (POI11_kon)C++17
90 / 100
3049 ms103464 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 5001; const int MOD = 1e4+7; int deg[MAXN], cnt[MAXN], fact[MAXN]; int fastPow(int a, int b) { if (b == 0) return 1; if (b & 1) return (a * fastPow(a, b-1)) % MOD; return fastPow((a*a)%MOD, b/2); } int rev(int a) { return fastPow(a, MOD-2); } int choose(int a, int b) { return (((fact[a]*rev(fact[a-b])) % MOD) * rev(fact[b])) % MOD; } int main() { fact[0] = 1; for (int i = 1; i<MAXN; ++i) fact[i] = (i*fact[i-1]) % MOD; int n, m = 0; cin >> n; for (int i = 0; i<n; ++i) { int sz,a; cin >> sz; deg[i] = sz; ++cnt[sz]; m += sz; while (sz--) { cin >> a; } } m /= 2; sort(deg,deg+n); int same = 1, degSum = 0, x = 1, ans = 0; for (int i = n-1; i; --i, ++x) { if (i != n-1) { if (deg[i] == deg[i+1]) ++same; else same = 1; } degSum += deg[i]; if (degSum - (x*(x-1))/2 == m) { ans += choose(cnt[deg[i]], same); } } cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...