Submission #64013380


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

constexpr int mod = 998244353;
int Add(int x, int y){ return (x + y) >= mod ? (x + y - mod) : (x + y); }
int Sub(int x, int y){ return (x - y) < 0 ? (x - y + mod) : (x - y); }
int Mul(int x, int y){ return 1ll * x * y % mod; }

int fastpow(int x, int y){
    int ret = 1;
    for(;y;y>>=1,x=Mul(x, x)){ if(y & 1) ret = Mul(ret, x); }
    return ret;
}

const int N = 505, N_ = N * N;

int h(int x){ return (x * (x - 1)) >> 1; }

int n, m, f[N], pw[N_], pw2[N_], fact[N], inv[N];

int binom(int n, int m){ return n < m ? 0 : Mul(fact[n], Mul(inv[m], inv[n - m])); }

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    cin >> n >> m;
    fact[0] = inv[0] = 1;
    for(int i=1;i<=n;i++) fact[i] = Mul(fact[i - 1], i), inv[i] = fastpow(fact[i], mod - 2);
    int ans = Mul(Sub(n, Add(m, 1)), fastpow(m, h(n)));
    pw[0] = pw2[0] = 1;
    for(int i=1;i<=n*n;i++) pw[i] = Mul(pw[i - 1], m);
    for(int k=1;k<=m;k++){
        for(int i=1;i<=n*n;i++) pw2[i] = Mul(pw2[i - 1], m - k);
        for(int N=1;N<=n;N++){
            f[N] = pw[h(N)];
            for(int i=1;i<N;i++){
                int tmp = Mul(binom(N - 1, i - 1), f[i]);
                tmp = Mul(tmp, Mul(pw[h(N - i)], pw2[i * (N - i)]));
                f[N] = Sub(f[N], tmp);
            }
            int ret = Mul(pw2[N * (n - N)], pw[h(n - N)]);
            ans = Add(ans, Mul(f[N], Mul(binom(n, N), ret)));
        }
    }
    cout << ans << '\n';
    return 0;
}

// Written by xiezheyuan

Submission Info

Submission Time
Task G - Many MST
User xiezheyuan
Language C++ 20 (gcc 12.2)
Score 600
Code Size 1582 Byte
Status AC
Exec Time 988 ms
Memory 5488 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 25
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3420 KiB
00_sample_01.txt AC 1 ms 3416 KiB
00_sample_02.txt AC 1 ms 3416 KiB
01_test_00.txt AC 1 ms 3500 KiB
01_test_01.txt AC 1 ms 3336 KiB
01_test_02.txt AC 1 ms 3428 KiB
01_test_03.txt AC 83 ms 4104 KiB
01_test_04.txt AC 64 ms 3788 KiB
01_test_05.txt AC 32 ms 3620 KiB
01_test_06.txt AC 756 ms 4932 KiB
01_test_07.txt AC 731 ms 4992 KiB
01_test_08.txt AC 856 ms 5152 KiB
01_test_09.txt AC 837 ms 5184 KiB
01_test_10.txt AC 894 ms 5308 KiB
01_test_11.txt AC 692 ms 4880 KiB
01_test_12.txt AC 163 ms 3964 KiB
01_test_13.txt AC 104 ms 4132 KiB
01_test_14.txt AC 35 ms 3616 KiB
01_test_15.txt AC 122 ms 3740 KiB
01_test_16.txt AC 988 ms 5364 KiB
01_test_17.txt AC 986 ms 5372 KiB
01_test_18.txt AC 984 ms 5292 KiB
01_test_19.txt AC 5 ms 5488 KiB
01_test_20.txt AC 1 ms 3376 KiB
01_test_21.txt AC 1 ms 3424 KiB