QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#411590 | #8670. 独立 | chenxinyang2006 | 100 ✓ | 626ms | 82792kb | C++20 | 10.2kb | 2024-05-15 16:21:53 | 2024-05-15 16:21:54 |
Judging History
answer
#include <bits/stdc++.h>
#define rep(i,j,k) for(int i=(j);i<=(k);i++)
#define per(i,j,k) for(int i=(j);i>=(k);i--)
#define uint unsigned int
#define ll long long
#define ull unsigned long long
#define db double
#define ldb long double
#define pii pair<int,int>
#define pll pair<ll,ll>
#define mkp make_pair
#define eb emplace_back
#define mem(a,b) memset(a,b,sizeof(a))
#define mpy(a,b) memcpy(a,b,sizeof(b))
#define dbg(...) cerr<<"#"<<__LINE__<<": "<<__VA_ARGS__<<endl
#define Fi(s) freopen(s,"r",stdin)
#define Fo(s) freopen(s,"w",stdout)
#define Fio(s) Fi(s".in"),Fo(s".out")
#define SZ(S) (int)S.size()
#define mod 998244353
//#define mod 1000000007
#define inf 0x3f3f3f3f
#define linf 0x3f3f3f3f3f3f3f3f
using namespace std;
template<int P>
class mod_int{
using Z=mod_int;
private:
static int mo(int x){return x<0?x+P:x;}
public:
int x;
int val()const{return x;}
mod_int():x(0){}
template<class T>mod_int(const T&x_):x(x_>=0&&x_<P?static_cast<int>(x_):mo(static_cast<int>(x_%P))){}
bool operator==(const Z&rhs)const{return x==rhs.x;}
bool operator!=(const Z&rhs)const{return x!=rhs.x;}
Z operator-()const{return Z(x?P-x:0);}
Z pow(long long k)const{Z res=1,t=*this;while(k){if(k&1)res*=t;if(k>>=1)t*=t;}return res;}
Z&operator++(){x<P-1?++x:x=0;return *this;}
Z&operator--(){x?--x:x=P-1;return *this;}
Z operator++(int){Z ret=x;x<P-1?++x:x=0;return ret;}
Z operator--(int){Z ret=x;x?--x:x=P-1;return ret;}
Z inv()const{return pow(P-2);}
Z&operator+=(const Z&rhs){(x+=rhs.x)>=P&&(x-=P);return *this;}
Z&operator-=(const Z&rhs){(x-=rhs.x)<0&&(x+=P);return *this;}
Z&operator*=(const Z&rhs){x=1ULL*x*rhs.x%P;return *this;}
Z&operator/=(const Z&rhs){return *this*=rhs.inv();}
#define setO(T,o) friend T operator o(const Z&lhs,const Z&rhs){Z res=lhs;return res o##=rhs;}
setO(Z,+)setO(Z,-)setO(Z,*)setO(Z,/)
#undef setO
};
const int P = 998244353;
using Z = mod_int<P>;
ll qpow(ll x, ll k){
ll ret = 1;
while(k){
if(k & 1) (ret *= x) %= mod;
(x *= x) %= mod, k >>= 1;
}
return ret;
}
namespace Poly_space{
Z inv2 = (P + 1) / 2;
vector<int> rev;
vector<Z> gg = {0, 1};
Z rt = 3;
void setroot(Z x){rt = x;}
void dft(vector<Z> &a){
int n = a.size();
if((int)rev.size() != n){
int k = __builtin_ctz(n) - 1; rev.resize(n);
for(int i = 0; i < n; i++){rev[i] = rev[i >> 1] >> 1 | (i & 1 ? (1 << k) : 0);}
}
for(int i = 0; i < n; i++) if(i < rev[i]) swap(a[i], a[rev[i]]);
if((int)gg.size() < n){
int k = __builtin_ctz(gg.size()); gg.resize(n);
while((1 << k) < n){
Z e = rt.pow((P - 1) >> (k + 1));
for(int i = (1 << (k - 1)); i < (1 << k); i++) gg[i << 1] = gg[i], gg[(i << 1) | 1] = gg[i] * e;
k++;
}
}
for(int mid = 1; mid < n; mid <<= 1) for(int i = 0; i < n; i += (mid << 1)) for(int j = 0; j < mid; j++){
Z x = a[i + j], y = a[i + j + mid] * gg[mid + j];
a[i + j] = x + y, a[i + j + mid] = x - y;
}
}
void idft(vector<Z> &a){
int n = a.size(); reverse(a.begin() + 1, a.end()), dft(a);
Z inv = Z(1 - P) / Z(n); for(int i = 0; i < n; i++) a[i] *= inv;
}
struct Poly{
vector<Z> a;
Poly(){} Poly(const vector<Z> &x): a(x){} Poly(const initializer_list<Z> &x): a(x){}
int size()const{return a.size();} void resize(int x){a.resize(x);}
Z operator [](int ind)const{if(ind < 0 || ind >= size()) return 0; return a[ind];}
Z&operator [](int ind){return a[ind];}
Poly modxk(int k)const{k = min(k, size()); return Poly(vector<Z>(a.begin(), a.begin() + k));}
Poly mulxk(int k)const{vector<Z> b = a; b.insert(b.begin(), k, 0); return b;}
Poly divxk(int k)const{if(size() <= k) return Poly(); return Poly(vector<Z>(a.begin() + k, a.end()));}
friend Poly operator + (const Poly &a, const Poly &b){
vector<Z> ret(max(a.size(), b.size()));
for(int i = 0; i < ret.size(); i++) ret[i] = a[i] + b[i];
return Poly(ret);
}
friend Poly operator - (const Poly &a, const Poly &b){
vector<Z> ret(max(a.size(), b.size()));
for(int i = 0; i < ret.size(); i++) ret[i] = a[i] - b[i];
return Poly(ret);
}
friend Poly operator * (const Poly &a, const Z &b){
vector<Z> ret(a.size());
for(int i = 0; i < ret.size(); i++) ret[i] = a[i] * b;
return Poly(ret);
}
friend Poly operator * (Poly a, Poly b){
if(a.size() == 0 || b.size() == 0) return Poly();
int sz = 1, n = a.size() + b.size() - 1;
while(sz < n) sz <<= 1;
a.resize(sz), b.resize(sz), dft(a.a), dft(b.a);
for(int i = 0; i < sz; i++) a.a[i] = a[i] * b[i];
idft(a.a), a.resize(n); return a;
}
Poly inv(int deg)const{
if(deg == 1) return Poly({a[0].pow(P - 2)});
Poly res = inv((deg + 1) >> 1), tmp = *this;
int sz = 1; while(sz < (deg << 1)) sz <<= 1;
tmp = tmp.modxk(deg), tmp.resize(sz), res.resize(sz);
dft(tmp.a), dft(res.a);
for(int i = 0; i < sz; i++) res[i] = 2 * res[i] - res[i] * res[i] * tmp[i];
idft(res.a), res.resize(deg);
return res;
}
Poly derivative()const{
if(size() == 1) return Poly();
Poly ret(vector<Z>(size() - 1));
for(int i = 1; i < size(); i++) ret.a[i - 1] = a[i] * i;
return ret;
}
Poly integrate()const{
Poly ret(vector<Z>(size() + 1));
for(int i = 1; i < ret.size(); i++) ret.a[i] = a[i - 1] * Z(i).inv();
return ret;
}
Poly ln(int deg){
Poly res = derivative(), tmp = inv(deg);
res = (res * tmp).integrate(), res.resize(deg);
return res;
}
Poly exp(int deg){
Poly ret(vector<Z>(1)); ret[0] = 1; int i = 1;
while(i < deg) i <<= 1, ret = (ret * (Poly({1}) - ret.ln(i) + modxk(i))).modxk(i);
return ret.modxk(deg);
}
};
}
using namespace Poly_space;
Z power(Z p,ll k){
Z ans = 1;
while(k){
if(k % 2 == 1) ans *= p;
p *= p;
k /= 2;
}
return ans;
}
int n,m;
Z inv[4005],_P[4005],C[4005][4005],fact[4005],ifac[4005];
Z _prd[4005],_iprd[4005];
Z CC(int N,int M){//1 <= M <= n + 1,m - 1 <= N <= m + n + 1
if(N < 0 || N < M) return 0;
if(N <= 2 * n + 3) return fact[N] * ifac[M] * ifac[N - M];
return _prd[N - (m - n - 1)] * _iprd[N - M - (m - n - 1)] * ifac[M];
}
int cnt;
int head[2005];
struct eg{
int to,nxt;
}edge[4005];
void make(int u,int v){
edge[++cnt].to = v;
edge[cnt].nxt = head[u];
head[u] = cnt;
}
Z dp[2005][2005],tmp[2005],temp[2005],answer;
int siz[2005];
Poly f,g;
void dfs(int u,int fa){
dp[u][0] = 1;//1/(1-x)
siz[u] = 1;
for(int i = head[u];i;i = edge[i].nxt){
int v = edge[i].to;
if(v == fa) continue;
dfs(v,u);
rep(p,0,siz[u]){
rep(q,0,siz[v]) tmp[p + q] += dp[u][p] * dp[v][q];
}
siz[u] += siz[v];
rep(p,0,siz[u]){
dp[u][p] = tmp[p];
tmp[p] = 0;
}
}
f.a.clear();g.a.clear();
rep(i,0,siz[u]) f.a.eb(dp[u][i] * _iprd[n - i]);
rep(i,-siz[u],siz[u]) g.a.eb(_prd[i + n]);
f = f * g;
rep(i,0,siz[u] - 1) tmp[i] = -f.a[i + siz[u]] * ifac[i];
// rep(i,0,siz[u] - 1) printf("%d ",tmp[i].val());
// printf("\n");
f.a.clear();g.a.clear();
rep(i,0,siz[u]) f.a.eb(tmp[i] * fact[i]);
rep(i,0,siz[u]) g.a.eb(ifac[i]);
reverse(g.a.begin(),g.a.end());
f = f * g;
rep(i,0,siz[u]) temp[i] = f.a[i + siz[u]] * ifac[i];
rep(i,0,siz[u] - 1) if(i % 2) temp[i] *= -1;
Z ways = _P[siz[u]];
rep(i,0,siz[u]) ways -= CC(m - i + siz[u] - 1,siz[u]) * dp[u][i];// >= m 的方案数
reverse(dp[u],dp[u] + siz[u] + 1);reverse(temp,temp + siz[u] + 1);
rep(i,0,siz[u]) swap(dp[u][i],temp[i]);
if(siz[u] % 2) rep(i,0,siz[u]) dp[u][i] *= -1;
Z prd = 1;
rep(i,0,siz[u]){
if(i % 2) dp[u][i] -= ways * prd;
else dp[u][i] += ways * prd;
prd *= (siz[u] - i) * inv[i + 1];
}
fill(tmp,tmp + siz[u] + 1,0);
fill(temp,temp + siz[u] + 1,0);
Z res = _P[siz[u]] * (m + 1);
rep(i,0,siz[u]) res -= CC(m - i + siz[u] + 1,siz[u] + 1) * dp[u][i];
answer += res * _P[n - siz[u]];
}
void dfs2(int u,int fa){
dp[u][0] = 1;
siz[u] = 1;
for(int i = head[u];i;i = edge[i].nxt){
int v = edge[i].to;
if(v == fa) continue;
dfs2(v,u);
siz[u] += siz[v];
f.a.clear();g.a.clear();
rep(p,0,m){
f.a.eb(dp[u][p]);
g.a.eb(dp[v][p]);
}
f = f * g;
fill(dp[u],dp[u] + m + 1,0);
rep(p,0,2 * m) dp[u][min(p,m)] += f.a[p];
}
Z awa = 0;
rep(i,0,m) awa += dp[u][i] * i;
reverse(dp[u],dp[u] + m + 1);
per(i,m,1) dp[u][i] += dp[u][i + 1];
dp[u][0] = awa;
awa = 0;
rep(i,0,m) awa += dp[u][i] * i;
answer += awa * _P[n - siz[u]];
}
void prepare(int L){
_P[0] = 1;
rep(i,1,L) _P[i] = _P[i - 1] * m;
rep(i,0,L){
C[i][0] = 1;
rep(j,1,i) C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
}
fact[0] = 1;
rep(i,1,L) fact[i] = fact[i - 1] * i;
ifac[L] = Z(1) / fact[L];
per(i,L - 1,0) ifac[i] = ifac[i + 1] * (i + 1);
rep(i,1,L) inv[i] = ifac[i] * fact[i - 1];
}
int main(){
// freopen("test.in","r",stdin);
scanf("%d%d",&n,&m);
prepare(2 * n + 3);
rep(i,1,n - 1){
int u,v;
scanf("%d%d",&u,&v);
make(u,v);make(v,u);
}
_prd[0] = _iprd[0] = 1;
rep(i,1,2 * n + 2){
_prd[i] = _prd[i - 1] * (m - n - 1 + i);
_iprd[i] = _iprd[i - 1] / (m - n - 1 + i);
}
if(m <= n + 1) dfs2(1,0);
else dfs(1,0);
printf("%d\n",answer.val());
return 0;
}
詳細信息
Subtask #1:
score: 11
Accepted
Test #1:
score: 11
Accepted
time: 8ms
memory: 82196kb
input:
4 1 1 2 1 3 1 4
output:
3
result:
ok single line: '3'
Test #2:
score: 11
Accepted
time: 8ms
memory: 82448kb
input:
2 4 1 2
output:
50
result:
ok single line: '50'
Test #3:
score: 11
Accepted
time: 4ms
memory: 82452kb
input:
3 1 1 2 1 3
output:
2
result:
ok single line: '2'
Test #4:
score: 11
Accepted
time: 0ms
memory: 82168kb
input:
5 5 1 2 1 3 1 4 4 5
output:
30873
result:
ok single line: '30873'
Test #5:
score: 11
Accepted
time: 0ms
memory: 82260kb
input:
5 5 1 2 2 3 1 4 1 5
output:
30873
result:
ok single line: '30873'
Test #6:
score: 11
Accepted
time: 4ms
memory: 82244kb
input:
5 5 1 2 1 3 2 4 3 5
output:
29268
result:
ok single line: '29268'
Subtask #2:
score: 24
Accepted
Dependency #1:
100%
Accepted
Test #7:
score: 24
Accepted
time: 0ms
memory: 82168kb
input:
20 18 1 2 2 3 1 4 1 5 1 6 1 7 5 8 1 9 1 10 2 11 5 12 11 13 5 14 5 15 3 16 7 17 15 18 9 19 19 20
output:
326123819
result:
ok single line: '326123819'
Test #8:
score: 24
Accepted
time: 8ms
memory: 82264kb
input:
18 14 1 2 2 3 3 4 2 5 1 6 4 7 7 8 5 9 6 10 7 11 2 12 1 13 4 14 4 15 8 16 3 17 1 18
output:
26385774
result:
ok single line: '26385774'
Test #9:
score: 24
Accepted
time: 3ms
memory: 82472kb
input:
20 20 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20
output:
799358395
result:
ok single line: '799358395'
Test #10:
score: 24
Accepted
time: 3ms
memory: 82256kb
input:
20 20 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20
output:
819211514
result:
ok single line: '819211514'
Test #11:
score: 24
Accepted
time: 0ms
memory: 82196kb
input:
20 18 1 2 2 3 2 4 3 5 1 6 2 7 4 8 4 9 6 10 8 11 10 12 12 13 12 14 10 15 15 16 13 17 14 18 17 19 15 20
output:
788316439
result:
ok single line: '788316439'
Test #12:
score: 24
Accepted
time: 0ms
memory: 82236kb
input:
19 19 1 2 1 3 1 4 2 5 3 6 3 7 4 8 8 9 9 10 6 11 8 12 11 13 13 14 11 15 11 16 12 17 17 18 16 19
output:
481833846
result:
ok single line: '481833846'
Subtask #3:
score: 13
Accepted
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Test #13:
score: 13
Accepted
time: 0ms
memory: 82228kb
input:
131 428 1 2 2 3 1 4 4 5 3 6 5 7 4 8 7 9 4 10 5 11 1 12 9 13 3 14 10 15 2 16 15 17 13 18 11 19 14 20 19 21 1 22 16 23 17 24 19 25 2 26 1 27 5 28 4 29 29 30 10 31 25 32 22 33 19 34 15 35 24 36 19 37 29 38 15 39 4 40 30 41 6 42 9 43 29 44 36 45 38 46 20 47 26 48 13 49 17 50 45 51 9 52 24 53 43 54 26 55...
output:
855674508
result:
ok single line: '855674508'
Test #14:
score: 13
Accepted
time: 12ms
memory: 82560kb
input:
415 425 1 2 2 3 3 4 1 5 4 6 4 7 2 8 1 9 9 10 4 11 4 12 3 13 1 14 7 15 10 16 7 17 11 18 16 19 16 20 11 21 20 22 21 23 20 24 22 25 5 26 21 27 7 28 6 29 25 30 29 31 11 32 30 33 17 34 13 35 6 36 6 37 36 38 37 39 23 40 30 41 35 42 10 43 19 44 6 45 26 46 22 47 36 48 36 49 32 50 1 51 24 52 19 53 49 54 48 5...
output:
921095443
result:
ok single line: '921095443'
Test #15:
score: 13
Accepted
time: 0ms
memory: 82284kb
input:
223 325 1 2 2 3 1 4 1 5 3 6 4 7 4 8 4 9 1 10 5 11 11 12 9 13 4 14 1 15 15 16 15 17 1 18 2 19 1 20 9 21 2 22 18 23 14 24 7 25 9 26 2 27 12 28 1 29 11 30 13 31 4 32 22 33 31 34 21 35 29 36 9 37 7 38 14 39 13 40 40 41 25 42 14 43 25 44 34 45 13 46 7 47 19 48 36 49 11 50 10 51 24 52 13 53 14 54 36 55 18...
output:
954879612
result:
ok single line: '954879612'
Test #16:
score: 13
Accepted
time: 3ms
memory: 82488kb
input:
452 126 1 2 2 3 3 4 3 5 2 6 2 7 2 8 2 9 4 10 3 11 8 12 7 13 5 14 14 15 6 16 8 17 1 18 11 19 2 20 1 21 5 22 11 23 2 24 18 25 2 26 2 27 10 28 16 29 28 30 22 31 30 32 23 33 25 34 19 35 12 36 4 37 15 38 37 39 4 40 5 41 22 42 35 43 38 44 37 45 13 46 27 47 41 48 17 49 48 50 33 51 7 52 51 53 27 54 33 55 14...
output:
374580067
result:
ok single line: '374580067'
Test #17:
score: 13
Accepted
time: 27ms
memory: 82324kb
input:
500 500 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52 ...
output:
318407545
result:
ok single line: '318407545'
Test #18:
score: 13
Accepted
time: 27ms
memory: 82272kb
input:
500 500 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 41 1 42 1 43 1 44 1 45 1 46 1 47 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 57 1 58 1 59 1 60 1 61 ...
output:
792738825
result:
ok single line: '792738825'
Test #19:
score: 13
Accepted
time: 15ms
memory: 82348kb
input:
498 500 1 2 2 3 2 4 1 5 2 6 5 7 5 8 8 9 7 10 10 11 7 12 10 13 11 14 12 15 12 16 13 17 15 18 16 19 17 20 16 21 17 22 21 23 22 24 21 25 21 26 25 27 25 28 24 29 26 30 29 31 27 32 29 33 30 34 33 35 34 36 36 37 35 38 37 39 39 40 36 41 41 42 40 43 39 44 44 45 45 46 43 47 46 48 44 49 49 50 46 51 47 52 49 5...
output:
877351641
result:
ok single line: '877351641'
Test #20:
score: 13
Accepted
time: 23ms
memory: 82516kb
input:
499 492 1 2 2 3 2 4 2 5 1 6 3 7 5 8 8 9 7 10 6 11 11 12 8 13 10 14 13 15 13 16 14 17 15 18 17 19 18 20 18 21 17 22 20 23 21 24 21 25 21 26 25 27 26 28 27 29 29 30 28 31 30 32 30 33 29 34 32 35 35 36 34 37 33 38 38 39 37 40 39 41 37 42 41 43 40 44 40 45 43 46 44 47 47 48 46 49 46 50 48 51 49 52 52 53...
output:
839162155
result:
ok single line: '839162155'
Test #21:
score: 13
Accepted
time: 15ms
memory: 82628kb
input:
496 500 1 2 1 3 3 4 2 5 2 6 6 7 7 8 5 9 5 10 10 11 9 12 12 13 12 14 12 15 11 16 14 17 15 18 14 19 17 20 17 21 17 22 22 23 19 24 21 25 24 26 25 27 24 28 24 29 27 30 27 31 31 32 31 33 32 34 31 35 33 36 35 37 34 38 37 39 36 40 38 41 41 42 42 43 41 44 41 45 44 46 42 47 44 48 47 49 45 50 47 51 48 52 49 5...
output:
47619248
result:
ok single line: '47619248'
Test #22:
score: 13
Accepted
time: 7ms
memory: 82568kb
input:
250 500 1 2 1 3 3 4 3 5 5 6 5 7 7 8 7 9 9 10 9 11 11 12 11 13 13 14 13 15 15 16 15 17 17 18 17 19 19 20 19 21 21 22 21 23 23 24 23 25 25 26 25 27 27 28 27 29 29 30 29 31 31 32 31 33 33 34 33 35 35 36 35 37 37 38 37 39 39 40 39 41 41 42 41 43 43 44 43 45 45 46 45 47 47 48 47 49 49 50 49 51 51 52 51 5...
output:
765248458
result:
ok single line: '765248458'
Subtask #4:
score: 27
Accepted
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Dependency #3:
100%
Accepted
Test #23:
score: 27
Accepted
time: 0ms
memory: 82492kb
input:
100 8917507 1 2 1 3 3 4 3 5 2 6 6 7 1 8 6 9 8 10 9 11 10 12 1 13 2 14 14 15 10 16 6 17 1 18 10 19 14 20 11 21 19 22 12 23 18 24 12 25 2 26 20 27 2 28 3 29 13 30 4 31 29 32 26 33 32 34 7 35 32 36 7 37 27 38 19 39 9 40 9 41 4 42 24 43 22 44 33 45 33 46 29 47 14 48 33 49 45 50 17 51 33 52 28 53 35 54 1...
output:
268113455
result:
ok single line: '268113455'
Test #24:
score: 27
Accepted
time: 0ms
memory: 82292kb
input:
422 19747075 1 2 2 3 1 4 3 5 3 6 4 7 4 8 8 9 9 10 5 11 8 12 10 13 7 14 2 15 15 16 8 17 15 18 14 19 4 20 1 21 11 22 20 23 11 24 14 25 15 26 7 27 17 28 9 29 23 30 12 31 3 32 16 33 1 34 30 35 16 36 17 37 28 38 29 39 32 40 3 41 10 42 33 43 37 44 19 45 17 46 26 47 5 48 44 49 42 50 31 51 29 52 40 53 51 54...
output:
946606434
result:
ok single line: '946606434'
Test #25:
score: 27
Accepted
time: 11ms
memory: 82240kb
input:
252 80449725 1 2 1 3 1 4 3 5 1 6 6 7 3 8 8 9 1 10 6 11 1 12 11 13 10 14 1 15 15 16 8 17 4 18 16 19 2 20 12 21 1 22 17 23 17 24 1 25 19 26 9 27 6 28 17 29 19 30 30 31 23 32 32 33 25 34 3 35 15 36 2 37 20 38 17 39 31 40 27 41 11 42 23 43 35 44 30 45 20 46 3 47 38 48 14 49 26 50 31 51 22 52 33 53 36 54...
output:
362245610
result:
ok single line: '362245610'
Test #26:
score: 27
Accepted
time: 8ms
memory: 82384kb
input:
405 83386580 1 2 2 3 1 4 1 5 4 6 3 7 1 8 7 9 1 10 3 11 8 12 9 13 5 14 2 15 1 16 1 17 11 18 12 19 12 20 1 21 10 22 1 23 15 24 10 25 4 26 17 27 21 28 3 29 27 30 26 31 26 32 27 33 17 34 7 35 24 36 11 37 7 38 13 39 17 40 1 41 10 42 42 43 17 44 11 45 26 46 18 47 9 48 45 49 26 50 45 51 42 52 31 53 33 54 8...
output:
678972362
result:
ok single line: '678972362'
Test #27:
score: 27
Accepted
time: 41ms
memory: 82452kb
input:
500 100000000 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 ...
output:
705713378
result:
ok single line: '705713378'
Test #28:
score: 27
Accepted
time: 4ms
memory: 82248kb
input:
500 100000000 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 41 1 42 1 43 1 44 1 45 1 46 1 47 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 57 1 58 1 59 1 60...
output:
244438911
result:
ok single line: '244438911'
Test #29:
score: 27
Accepted
time: 15ms
memory: 82376kb
input:
491 55280954 1 2 1 3 2 4 2 5 4 6 3 7 6 8 8 9 8 10 7 11 10 12 8 13 9 14 12 15 12 16 14 17 13 18 16 19 17 20 17 21 17 22 22 23 22 24 20 25 25 26 22 27 27 28 26 29 27 30 30 31 31 32 32 33 31 34 31 35 35 36 32 37 37 38 36 39 37 40 40 41 40 42 40 43 42 44 41 45 42 46 46 47 43 48 45 49 48 50 48 51 48 52 4...
output:
564876887
result:
ok single line: '564876887'
Test #30:
score: 27
Accepted
time: 12ms
memory: 82352kb
input:
500 11609594 1 2 1 3 2 4 1 5 4 6 2 7 7 8 8 9 5 10 6 11 8 12 8 13 9 14 13 15 15 16 13 17 15 18 14 19 15 20 20 21 18 22 22 23 23 24 24 25 25 26 25 27 24 28 24 29 28 30 27 31 30 32 28 33 32 34 32 35 31 36 36 37 33 38 34 39 36 40 38 41 37 42 38 43 39 44 43 45 42 46 43 47 47 48 45 49 48 50 50 51 49 52 49...
output:
228579924
result:
ok single line: '228579924'
Test #31:
score: 27
Accepted
time: 11ms
memory: 82600kb
input:
494 31306076 1 2 1 3 3 4 4 5 1 6 4 7 5 8 6 9 5 10 8 11 9 12 8 13 13 14 10 15 13 16 12 17 14 18 15 19 18 20 16 21 18 22 22 23 19 24 21 25 22 26 25 27 27 28 26 29 26 30 30 31 30 32 29 33 31 34 31 35 33 36 35 37 34 38 37 39 36 40 36 41 39 42 42 43 39 44 44 45 45 46 46 47 46 48 44 49 48 50 50 51 51 52 4...
output:
643295951
result:
ok single line: '643295951'
Test #32:
score: 27
Accepted
time: 7ms
memory: 82324kb
input:
250 100000000 1 2 1 3 3 4 3 5 5 6 5 7 7 8 7 9 9 10 9 11 11 12 11 13 13 14 13 15 15 16 15 17 17 18 17 19 19 20 19 21 21 22 21 23 23 24 23 25 25 26 25 27 27 28 27 29 29 30 29 31 31 32 31 33 33 34 33 35 35 36 35 37 37 38 37 39 39 40 39 41 41 42 41 43 43 44 43 45 45 46 45 47 47 48 47 49 49 50 49 51 51 5...
output:
79358352
result:
ok single line: '79358352'
Subtask #5:
score: 25
Accepted
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Dependency #3:
100%
Accepted
Dependency #4:
100%
Accepted
Test #33:
score: 25
Accepted
time: 12ms
memory: 82456kb
input:
1514 72630467 1 2 1 3 1 4 4 5 5 6 1 7 1 8 5 9 3 10 6 11 6 12 5 13 3 14 12 15 8 16 16 17 4 18 11 19 13 20 14 21 18 22 22 23 23 24 9 25 19 26 17 27 24 28 4 29 11 30 17 31 2 32 14 33 12 34 15 35 28 36 6 37 28 38 24 39 25 40 16 41 6 42 18 43 15 44 8 45 13 46 20 47 33 48 37 49 30 50 16 51 7 52 41 53 23 5...
output:
771044900
result:
ok single line: '771044900'
Test #34:
score: 25
Accepted
time: 23ms
memory: 82468kb
input:
1771 2668838 1 2 2 3 1 4 2 5 4 6 3 7 6 8 8 9 3 10 6 11 9 12 10 13 10 14 13 15 15 16 2 17 8 18 12 19 10 20 14 21 16 22 9 23 18 24 6 25 17 26 26 27 1 28 26 29 20 30 18 31 12 32 1 33 23 34 33 35 4 36 1 37 26 38 24 39 37 40 7 41 28 42 12 43 33 44 16 45 30 46 20 47 3 48 30 49 22 50 50 51 22 52 41 53 2 54...
output:
573260204
result:
ok single line: '573260204'
Test #35:
score: 25
Accepted
time: 157ms
memory: 82392kb
input:
1774 710 1 2 1 3 3 4 1 5 3 6 2 7 6 8 4 9 3 10 3 11 1 12 6 13 7 14 12 15 7 16 6 17 7 18 2 19 2 20 17 21 12 22 13 23 4 24 12 25 25 26 4 27 16 28 4 29 7 30 29 31 5 32 16 33 18 34 33 35 29 36 21 37 25 38 12 39 11 40 11 41 41 42 16 43 40 44 34 45 6 46 45 47 5 48 41 49 21 50 26 51 21 52 22 53 6 54 9 55 37...
output:
362013258
result:
ok single line: '362013258'
Test #36:
score: 25
Accepted
time: 160ms
memory: 82308kb
input:
1865 952 1 2 1 3 1 4 4 5 2 6 6 7 7 8 1 9 8 10 4 11 7 12 5 13 1 14 9 15 15 16 11 17 11 18 1 19 8 20 15 21 7 22 12 23 11 24 11 25 5 26 19 27 3 28 6 29 29 30 1 31 13 32 29 33 22 34 16 35 4 36 5 37 27 38 1 39 22 40 28 41 9 42 32 43 28 44 40 45 41 46 38 47 8 48 20 49 47 50 37 51 39 52 7 53 20 54 49 55 40...
output:
996024345
result:
ok single line: '996024345'
Test #37:
score: 25
Accepted
time: 626ms
memory: 82792kb
input:
2000 100000000 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51...
output:
426981666
result:
ok single line: '426981666'
Test #38:
score: 25
Accepted
time: 21ms
memory: 82436kb
input:
2000 100000000 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 41 1 42 1 43 1 44 1 45 1 46 1 47 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 57 1 58 1 59 1 6...
output:
646449010
result:
ok single line: '646449010'
Test #39:
score: 25
Accepted
time: 219ms
memory: 82524kb
input:
1993 76023311 1 2 1 3 2 4 3 5 4 6 4 7 3 8 5 9 8 10 7 11 7 12 11 13 11 14 11 15 11 16 16 17 17 18 14 19 17 20 17 21 19 22 20 23 19 24 24 25 22 26 23 27 26 28 28 29 28 30 30 31 29 32 28 33 32 34 31 35 32 36 33 37 36 38 36 39 39 40 36 41 41 42 38 43 39 44 42 45 43 46 44 47 45 48 46 49 47 50 49 51 50 52...
output:
579873711
result:
ok single line: '579873711'
Test #40:
score: 25
Accepted
time: 225ms
memory: 82676kb
input:
1998 30040018 1 2 1 3 3 4 2 5 2 6 3 7 7 8 7 9 7 10 8 11 7 12 10 13 11 14 10 15 13 16 12 17 15 18 16 19 15 20 18 21 18 22 19 23 21 24 23 25 24 26 23 27 25 28 28 29 25 30 29 31 29 32 29 33 33 34 34 35 33 36 34 37 34 38 37 39 39 40 38 41 41 42 38 43 40 44 42 45 44 46 42 47 43 48 48 49 49 50 48 51 47 52...
output:
964923618
result:
ok single line: '964923618'
Test #41:
score: 25
Accepted
time: 167ms
memory: 82432kb
input:
1990 943 1 2 2 3 2 4 4 5 3 6 2 7 4 8 8 9 8 10 6 11 10 12 9 13 13 14 10 15 12 16 16 17 15 18 15 19 16 20 20 21 21 22 22 23 20 24 21 25 21 26 24 27 27 28 28 29 28 30 27 31 29 32 28 33 32 34 32 35 32 36 33 37 33 38 36 39 39 40 40 41 37 42 39 43 41 44 43 45 43 46 43 47 45 48 48 49 45 50 46 51 48 52 49 5...
output:
184212933
result:
ok single line: '184212933'
Test #42:
score: 25
Accepted
time: 332ms
memory: 82680kb
input:
2000 100000000 1 2 1 3 3 4 3 5 5 6 5 7 7 8 7 9 9 10 9 11 11 12 11 13 13 14 13 15 15 16 15 17 17 18 17 19 19 20 19 21 21 22 21 23 23 24 23 25 25 26 25 27 27 28 27 29 29 30 29 31 31 32 31 33 33 34 33 35 35 36 35 37 37 38 37 39 39 40 39 41 41 42 41 43 43 44 43 45 45 46 45 47 47 48 47 49 49 50 49 51 51 ...
output:
364931793
result:
ok single line: '364931793'