QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#17068 | #1786. 路径交点 | Qingyu | 100 ✓ | 47ms | 10296kb | C++20 | 3.8kb | 2022-01-01 16:14:38 | 2022-05-04 13:08:17 |
Judging History
answer
// Author: wlzhouzhuan
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define pii pair<int, int>
#define pb push_back
#define fir first
#define sec second
#define rep(i, l, r) for (int i = l; i <= r; i++)
#define per(i, l, r) for (int i = l; i >= r; i--)
#define mset(s, t) memset(s, t, sizeof(s))
#define mcpy(s, t) memcpy(s, t, sizeof(t))
#define poly vector<int>
#define SZ(x) (int(x.size()))
template<typename T1, typename T2> void ckmin(T1 &a, T2 b) { if (a > b) a = b; }
template<typename T1, typename T2> void ckmax(T1 &a, T2 b) { if (a < b) a = b; }
namespace IO {
const int SIZE = 1 << 23;
char ibuf[SIZE], *iS, *iT;
char obuf[SIZE], *oS = obuf, *oT = oS + SIZE - 1;
bool flush() {
fwrite(obuf, 1, oS - obuf, stdout);
oS = obuf;
return true;
}
#define gc() (iS == iT ? (iT = (iS = ibuf) + fread(ibuf, 1, SIZE, stdin), (iS == iT ? EOF : *iS++)) : *iS++)
#define pc(x) (*oS++ = x)
int read() {
int x = 0, f = 0;
char c = gc();
while (!isdigit(c)) f |= c == '-', c = gc();
while (isdigit(c)) x = 10 * x + c - '0', c = gc();
return f ? -x : x;
}
char qu[55]; int qlen;
template <class T> void print(T x) {
if (!x) pc('0');
if (x < 0) pc('-'), x = -x;
while (x) qu[++qlen] = x % 10 + '0', x /= 10;
while (qlen) pc(qu[qlen--]);
}
template <class T> void print(T x, char charset) {
print(x), pc(charset);
}
struct Flusher {
~Flusher() {
flush();
}
} flusher;
}
using namespace IO;
const int mod = 998244353;
const ull modd = 1ull * mod * mod;
inline int qpow(int a, int b = mod - 2) {
int res = 1;
while (b > 0) {
if (b & 1) res = 1ll * res * a % mod;
a = 1ll * a * a % mod;
b >>= 1;
}
return res;
}
int mat[201][201], f[201][201];
int matn, matm;
int k, n[101], m[101];
void mul(int n, int m, int t) {
static ull tmp[201][201];
for (int i = 1; i <= n; i++)
memset(tmp[i], 0, sizeof(ull) * (t + 1));
for (register int j = 1; j <= m; j++) {
for (register int k = 1; k <= t; k++) {
if (!f[j][k]) continue;
for (register int i = 1; i <= n; i++) {
tmp[i][k] += mat[i][j];
}
}
}
for (int i = 1; i <= n; i++)
for (int j = 1; j <= t; j++)
mat[i][j] = tmp[i][j] % mod;
matn = n, matm = t;
}
int det(int n) {
int res = 1;
for (int i = 1; i <= n; i++) {
int who = -1;
for (int j = i; j <= n; j++)
if (mat[j][i]) {
who = j;
break;
}
if (!~who) return 0;
if (who != i) {
for (int j = 1; j <= n; j++)
swap(mat[i][j], mat[who][j]);
res = (mod - res) % mod;
}
for (int j = i + 1; j <= n; j++) {
int div = 1ll * mat[j][i] * qpow(mat[i][i]) % mod;
for (int k = i; k <= n; k++)
mat[j][k] = (mat[j][k] + mod - 1ll * mat[i][k] * div % mod) % mod;
}
res = 1ll * res * mat[i][i] % mod;
}
return res;
}
void solve() {
k = read();
for (int i = 1; i <= k; i++) n[i] = read();
for (int i = 1; i < k; i++) m[i] = read();
for (int t = 1; t < k; t++) {
for (int i = 1; i <= n[t]; i++)
for (int j = 1; j <= n[t + 1]; j++)
f[i][j] = 0;
while (m[t]--) {
int u = read(), v = read();
f[u][v] = 1;
}
if (t == 1) {
matn = n[1], matm = n[2];
for (int i = 1; i <= matn; i++)
memcpy(mat[i], f[i], 4 * (matm + 1));
}
else mul(matn, matm, n[t + 1]);
}
// assert(matn == matm);
// for (int i = 1; i <= matn; i++) {
// for (int j = 1; j <= matm; j++)
// printf("%d ", mat[i][j]);
// puts("");
// }
print(det(matn), '\n');
}
int main() {
int T = read();
while (T--) solve();
return 0;
}
/*
1
3
2 3 2
4 4
1 1
1 2
2 1
2 3
1 2
2 1
3 1
3 2
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 5
Accepted
time: 0ms
memory: 5720kb
input:
5 2 10 10 49 1 1 1 2 1 7 1 9 2 3 2 6 2 9 2 10 3 1 3 2 3 3 3 5 3 6 3 7 3 8 3 9 4 2 4 3 4 4 4 7 4 10 5 3 5 7 5 10 6 1 6 2 6 3 6 5 6 8 6 9 7 1 7 3 7 8 7 9 7 10 8 5 8 6 8 7 8 9 9 1 9 3 9 4 9 7 9 10 10 2 10 4 10 6 10 9 10 10 2 10 10 46 1 1 1 2 1 3 1 10 2 1 2 2 2 5 2 9 2 10 3 3 3 7 3 8 4 2 4 5 4 7 4 8 4 1...
output:
998244348 24 21 998244346 6
result:
ok 5 lines
Test #2:
score: 5
Accepted
time: 3ms
memory: 5744kb
input:
5 2 10 10 56 1 1 1 3 1 5 1 7 1 9 1 10 2 4 2 5 2 6 2 7 2 8 2 9 2 10 3 1 3 3 3 4 3 6 3 8 3 9 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 9 4 10 5 1 5 2 5 5 5 6 5 7 5 10 6 1 6 4 6 5 6 7 7 1 7 3 7 4 8 3 8 4 8 8 9 2 9 3 9 7 9 8 9 10 10 1 10 2 10 6 10 7 10 8 10 9 10 10 2 10 10 48 1 2 1 4 1 5 1 7 1 8 1 9 1 10 2 1 2 3 2 ...
output:
998244350 1 998244334 998244347 998244348
result:
ok 5 lines
Test #3:
score: 5
Accepted
time: 3ms
memory: 5660kb
input:
5 2 10 10 55 1 5 1 6 2 1 2 3 2 4 2 6 2 7 2 8 2 9 2 10 3 3 3 4 3 5 3 6 3 7 3 10 4 1 4 2 4 3 4 4 4 6 4 7 4 8 4 10 5 1 5 2 5 3 5 5 5 7 6 1 6 2 6 4 6 6 7 3 7 5 7 8 7 9 8 1 8 2 8 4 8 6 8 9 8 10 9 1 9 2 9 4 9 6 9 7 10 2 10 3 10 4 10 6 10 8 10 9 10 10 2 10 10 53 1 1 1 4 1 6 1 10 2 1 2 3 2 4 2 6 2 7 2 8 2 9...
output:
5 998244349 1 1 1
result:
ok 5 lines
Test #4:
score: 5
Accepted
time: 4ms
memory: 5528kb
input:
5 2 10 10 53 1 1 1 2 1 5 1 6 1 7 1 10 2 2 2 3 2 8 3 2 3 3 3 5 3 9 3 10 4 1 4 5 4 6 4 7 4 8 4 9 5 1 5 2 5 3 5 5 5 7 5 10 6 5 6 7 6 8 6 9 6 10 7 4 7 6 7 8 7 9 7 10 8 1 8 2 8 5 8 9 9 1 9 2 9 4 9 5 9 10 10 1 10 2 10 3 10 4 10 6 10 7 10 9 10 10 2 10 10 50 1 1 1 4 1 8 1 10 2 3 2 4 2 5 2 7 2 10 3 2 3 3 3 4...
output:
998244343 998244352 998244347 998244343 998244343
result:
ok 5 lines
Test #5:
score: 5
Accepted
time: 3ms
memory: 5668kb
input:
5 10 10 10 10 10 10 10 10 10 10 10 13 10 18 15 18 18 15 14 13 5 4 4 7 9 6 8 9 10 2 2 1 7 8 3 5 6 10 1 3 2 4 5 8 3 8 4 7 7 8 6 10 9 1 2 2 1 4 8 6 5 9 10 3 3 5 7 9 8 2 10 10 1 1 2 4 4 8 6 7 9 5 3 6 5 3 1 4 5 2 10 7 4 10 4 6 2 10 4 2 1 5 9 5 2 6 10 3 1 10 4 2 8 4 7 1 5 8 6 7 3 9 1 9 8 3 5 6 1 4 9 8 5 8...
output:
1 998244352 1 0 998244352
result:
ok 5 lines
Test #6:
score: 5
Accepted
time: 2ms
memory: 5816kb
input:
5 10 10 10 10 10 10 10 10 10 10 10 16 16 14 17 10 12 15 16 13 5 8 1 10 7 2 9 1 6 4 2 7 8 6 3 3 4 9 10 5 5 4 9 6 7 5 1 1 3 5 1 2 8 7 10 6 2 9 1 5 4 3 7 8 6 4 3 10 9 2 5 1 10 5 2 7 4 8 3 3 3 1 4 2 7 7 6 6 9 10 5 5 3 2 8 1 4 3 10 4 2 9 1 8 1 9 4 10 9 2 10 8 7 3 6 10 10 5 5 1 2 4 1 2 3 6 4 8 9 7 8 9 6 9...
output:
1 1 998244352 0 998244352
result:
ok 5 lines
Test #7:
score: 5
Accepted
time: 4ms
memory: 7700kb
input:
5 10 10 10 10 10 10 10 10 10 10 10 55 49 52 51 47 48 58 49 39 1 1 1 3 1 9 2 2 2 3 2 7 2 8 2 10 3 1 3 2 3 3 3 4 3 5 3 6 3 8 4 1 4 2 4 3 4 5 4 7 4 9 4 10 5 6 5 9 5 10 6 1 6 5 6 6 6 7 6 9 6 10 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 10 8 3 8 4 8 5 8 6 8 7 8 8 8 9 8 10 9 7 9 8 9 9 10 1 10 2 10 3 10 4 10 5 1 1 1 3...
output:
25344 19440 997437953 46080 997544513
result:
ok 5 lines
Test #8:
score: 5
Accepted
time: 1ms
memory: 5676kb
input:
5 10 10 10 10 10 10 10 10 10 10 10 43 48 45 52 50 52 52 46 54 1 1 1 3 1 5 1 6 1 9 1 10 2 1 2 2 2 3 2 5 2 6 2 7 3 5 3 7 3 8 4 3 4 4 4 5 4 7 4 9 5 1 5 2 5 5 5 7 5 10 6 2 6 3 6 6 6 8 7 10 8 1 8 2 8 3 8 6 8 9 9 1 9 4 9 5 9 9 10 1 10 6 10 7 10 8 1 1 1 2 1 4 1 7 2 1 2 2 2 7 2 8 2 9 3 2 3 3 3 4 3 5 3 6 3 8...
output:
998237441 998050817 1920 138240 998239553
result:
ok 5 lines
Test #9:
score: 5
Accepted
time: 4ms
memory: 7780kb
input:
5 10 10 13 10 13 10 10 12 11 11 10 58 62 62 64 49 55 62 57 51 1 2 1 5 1 6 1 9 2 7 2 10 2 11 2 12 2 13 3 4 3 5 3 8 3 9 3 11 3 12 4 2 4 3 4 7 4 11 4 12 5 2 5 4 5 6 5 7 5 8 5 10 5 11 5 13 6 4 6 5 6 6 6 7 6 8 6 10 6 11 6 12 7 2 7 4 7 6 7 8 7 9 7 12 7 13 8 1 8 2 8 6 8 7 8 9 8 10 8 12 9 4 9 6 9 8 9 13 10 ...
output:
0 431535363 869602600 0 462374665
result:
ok 5 lines
Test #10:
score: 5
Accepted
time: 3ms
memory: 5780kb
input:
5 10 10 14 11 10 10 13 10 13 10 10 66 75 55 45 66 53 60 66 56 1 1 1 5 1 7 1 9 2 2 2 5 2 6 2 10 2 12 3 1 3 6 3 7 3 12 3 14 4 3 4 4 4 5 4 7 4 10 4 12 4 13 4 14 5 3 5 5 5 11 5 12 5 13 5 14 6 3 6 4 6 6 6 8 6 9 6 13 6 14 7 1 7 3 7 4 7 6 7 7 7 9 7 12 7 13 7 14 8 1 8 2 8 3 8 7 8 8 8 9 8 10 8 11 8 12 9 1 9 ...
output:
509445037 210531260 116561285 0 480038571
result:
ok 5 lines
Test #11:
score: 5
Accepted
time: 5ms
memory: 7692kb
input:
5 2 10 10 56 1 1 1 2 1 3 1 5 1 6 1 7 1 9 2 1 2 3 2 5 2 7 2 9 3 2 3 3 3 4 3 8 3 10 4 1 4 2 4 5 4 6 5 1 5 2 5 3 5 4 5 7 5 8 5 10 6 1 6 2 6 3 6 7 7 1 7 3 7 4 7 5 7 6 7 7 7 8 8 1 8 2 8 3 8 4 8 5 8 7 9 2 9 4 9 8 9 9 10 1 10 2 10 3 10 4 10 7 10 9 10 10 2 10 10 46 1 1 1 2 1 3 1 5 1 7 1 9 2 2 2 7 2 8 2 9 3 ...
output:
998244347 7 547857492 998244348 998244349
result:
ok 5 lines
Test #12:
score: 5
Accepted
time: 5ms
memory: 5800kb
input:
5 2 10 10 42 1 1 1 4 1 5 1 7 1 8 2 1 2 2 2 8 3 1 3 5 3 6 3 8 4 3 4 5 5 1 5 3 5 4 5 7 5 9 5 10 6 2 6 6 6 8 7 1 7 3 7 4 7 10 8 3 8 4 8 8 8 10 9 3 9 5 9 7 9 8 9 10 10 2 10 4 10 5 10 6 10 8 10 9 2 100 100 4905 1 1 1 2 1 5 1 6 1 7 1 10 1 13 1 14 1 15 1 17 1 18 1 20 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 32...
output:
998244341 530973746 2 0 1
result:
ok 5 lines
Test #13:
score: 5
Accepted
time: 3ms
memory: 5804kb
input:
5 2 10 10 58 1 1 1 2 1 4 1 9 1 10 2 2 2 3 2 6 2 7 2 8 3 3 3 6 3 7 3 8 3 9 3 10 4 1 4 2 4 5 4 6 4 7 4 8 5 1 5 2 5 3 5 4 5 5 5 7 5 8 5 9 5 10 6 1 6 2 6 5 6 6 6 7 6 9 7 3 7 4 7 5 7 6 7 7 7 8 7 10 8 1 8 4 8 5 8 9 8 10 9 2 9 5 9 8 9 9 9 10 10 2 10 6 10 7 10 8 2 10 10 55 1 1 1 5 1 7 1 8 1 10 2 1 2 2 2 4 2...
output:
3 998244351 998244348 2 741330205
result:
ok 5 lines
Test #14:
score: 5
Accepted
time: 9ms
memory: 7984kb
input:
5 100 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ...
output:
1 998244352 1 0 1
result:
ok 5 lines
Test #15:
score: 5
Accepted
time: 4ms
memory: 5940kb
input:
5 100 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ...
output:
0 1 998244352 1 998244352
result:
ok 5 lines
Test #16:
score: 5
Accepted
time: 36ms
memory: 9760kb
input:
5 100 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ...
output:
334543195 834743238 64906936 887345970 749415036
result:
ok 5 lines
Test #17:
score: 5
Accepted
time: 37ms
memory: 10036kb
input:
5 100 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ...
output:
551005664 774916190 258165927 333831611 45511363
result:
ok 5 lines
Test #18:
score: 5
Accepted
time: 47ms
memory: 10084kb
input:
5 100 10 15 13 13 12 13 13 13 10 13 11 11 11 12 11 12 13 11 12 13 10 10 10 11 11 12 12 10 10 10 11 10 12 12 10 13 12 12 12 11 10 12 13 12 13 13 12 10 10 11 10 12 10 10 10 12 11 12 12 10 12 12 11 15 13 12 10 11 12 12 10 11 11 10 10 12 11 12 13 13 10 13 13 13 10 11 11 11 12 10 11 13 10 12 10 10 13 11 ...
output:
0 131476393 674791629 0 453887582
result:
ok 5 lines
Test #19:
score: 5
Accepted
time: 41ms
memory: 10236kb
input:
5 100 10 12 10 13 10 12 13 12 12 13 10 11 13 12 13 12 10 12 13 12 10 12 12 12 10 10 13 12 10 10 13 11 10 12 11 12 10 10 13 11 11 11 12 10 11 11 11 13 13 13 13 11 11 12 10 10 13 13 10 11 13 11 11 15 10 10 13 11 12 12 13 10 11 13 12 13 11 10 11 10 13 13 10 10 13 11 13 13 10 13 12 13 13 11 13 11 11 12 ...
output:
0 654380406 500344548 0 452282079
result:
ok 5 lines
Test #20:
score: 5
Accepted
time: 46ms
memory: 10296kb
input:
5 100 100 119 112 115 121 120 115 112 137 116 150 123 115 113 112 113 130 118 104 127 103 122 123 118 116 139 102 117 137 111 131 135 106 119 135 106 119 103 115 124 123 135 135 122 134 117 106 128 115 121 115 115 131 112 124 135 120 113 174 113 106 115 101 124 101 117 126 130 113 105 124 139 129 12...
output:
50989987 555456312 817057040 0 277357563
result:
ok 5 lines
Extra Test:
score: 0
Extra Test Passed