QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#94642 | #6190. Graph Problem | Narrator | AC ✓ | 1549ms | 15640kb | C++14 | 3.7kb | 2023-04-07 11:29:57 | 2023-04-07 11:30:00 |
Judging History
answer
#include <algorithm>
#include <iostream>
#include <cstring>
#include <random>
#include <chrono>
constexpr int N(510), p(1e9 + 9);
int fp(int a, int b)
{
int ans(1), off(a);
while (b)
{
if (b & 1)
ans = 1ll * ans * off % p;
off = 1ll * off * off % p;
b >>= 1;
}
return ans;
}
void inv(int dat[N][N], int n, int ans[N][N])
{
for (int i(1); i <= n; ++i)
{
std::memset(ans[i] + 1, 0, sizeof(int) * n);
ans[i][i] = 1;
}
for (int i(1); i <= n; ++i)
{
int pos(i);
for (int j(i); j <= n; ++j)
if (dat[j][i])
{
pos = j;
break;
}
if (pos != i)
{
for (int t(i); t <= n; ++t)
std::swap(dat[i][t], dat[pos][t]);
for (int t(1); t <= n; ++t)
std::swap(ans[i][t], ans[pos][t]);
}
int num(fp(dat[i][i], p - 2));
for (int t(i); t <= n; ++t)
dat[i][t] = 1ll * dat[i][t] * num % p;
for (int t(1); t <= n; ++t)
ans[i][t] = 1ll * ans[i][t] * num % p;
for (int j(1); j <= n; ++j)
if (j != i)
{
int v(p - dat[j][i]);
for (int t(i); t <= n; ++t)
dat[j][t] = (dat[j][t] + 1ll * dat[i][t] * v) % p;
for (int t(1); t <= n; ++t)
ans[j][t] = (ans[j][t] + 1ll * ans[i][t] * v) % p;
}
}
}
namespace fr
{
#include <ctype.h>
char buf[1 << 23], *p1 = buf, *p2 = buf, obuf[1 << 23], *O = obuf;
#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2) ? EOF : *p1++)
#define putchar(c) (((O == obuf + (1 << 23)) ? (fwrite(obuf, 1, O - obuf, stdout), O = obuf) : O), *O++ = (c))
void rd(char *x)
{
char c = getchar();
while (isspace(c))
c = getchar();
while (!isspace(c) && c != EOF)
*(x++) = c, c = getchar();
*(x++) = '\0';
}
template <class T>
void rd(T &x)
{
T ret = 0;
bool flg = false;
char c = getchar();
while (!isdigit(c) && c != '-')
c = getchar();
if (c == '-')
c = getchar(), flg = true;
while (isdigit(c))
ret = (ret << 1) + (ret << 3) + (c - '0'), c = getchar();
if (flg)
x = -ret;
else
x = ret;
}
void pc(char c) { putchar(c); }
void flush() { fwrite(obuf, 1, O - obuf, stdout), O = obuf; }
template <class T>
void wr(T x)
{
if (x < 0)
putchar('-'), x = -x;
if (x == 0)
putchar('0');
static int cnt, stk[110];
cnt = 0;
while (x)
stk[++cnt] = x % 10, x /= 10;
for (int i = cnt; i; --i)
putchar(stk[i] + '0');
}
}
using fr::flush;
using fr::pc;
using fr::rd;
using fr::wr;
int main()
{
static int tmp[N][N], trans[N][N], M[N][N], rev[N][N];
std::mt19937 rnd(std::chrono::high_resolution_clock::now().time_since_epoch().count());
std::uniform_int_distribution<int> uid{2, p - 2};
int n, m;
rd(n);
rd(m);
for (int i(1); i <= m; ++i)
{
int u, v;
rd(u);
rd(v);
trans[u][v] = uid(rnd);
tmp[u][v] = p - trans[u][v];
}
for (int i(1); i <= n; ++i)
trans[i][i] = uid(rnd), tmp[i][i] = p + 1 - trans[i][i];
inv(tmp, n, M);
int q;
rd(q);
int cnt(0);
while (q--)
{
int k;
rd(k);
static int ps[10];
for (int i(1); i <= k; ++i)
{
int t;
rd(t);
ps[i] = (t + cnt - 1) % n + 1;
}
for (int i(1); i <= k; ++i)
{
for (int j(1); j <= k; ++j)
{
tmp[i][j] = M[ps[i]][ps[j]];
}
}
inv(tmp, k, rev);
int qq;
rd(qq);
while (qq--)
{
int s, t;
rd(s);
rd(t);
s = (s + cnt - 1) % n + 1, t = (t + cnt - 1) % n + 1;
int ans(0);
for (int i(1); i <= k; ++i)
{
for (int j(1); j <= k; ++j)
{
ans = (ans + 1ll * M[s][ps[i]] * rev[i][j] % p * M[ps[j]][t]) % p;
}
}
if (ans == M[s][t])
{
pc('0');
}
else
{
pc('1');
++cnt;
}
}
pc('\n');
}
flush();
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 2ms
memory: 7596kb
input:
5 4 1 2 2 3 3 4 4 5 2 1 4 2 1 5 1 3 3 5 3 4 1 1 2
output:
01 1
result:
ok 2 lines
Test #2:
score: 0
Accepted
time: 2ms
memory: 7732kb
input:
100 4870 1 4 1 9 2 1 2 6 2 8 4 5 4 10 5 2 5 3 5 7 6 2 6 4 6 8 7 1 7 2 7 8 7 10 8 1 8 2 8 3 8 4 8 5 8 6 8 7 8 9 8 13 8 16 8 17 9 1 9 2 9 3 9 4 9 5 9 6 9 7 9 8 9 18 10 1 10 2 10 3 10 4 10 5 10 6 10 7 10 11 10 15 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 10 11 12 11 18 11 20 12 1 12 2 12 3 12 4 1...
output:
1011000010 1010110101 0001010000 0000101001 1000010000 0111001101 0011001101 1100010010 0001100010 0010110101 0011001111 0001000101 1101010010 0100001100 1000100001 0100000000 1110100000 0101111010 0111001001 1110000000 1011000011 0110000000 0000000100 0001011000 1000111000 1111000010 1000110000 011...
result:
ok 100 lines
Test #3:
score: 0
Accepted
time: 6ms
memory: 7696kb
input:
100 4839 1 2 1 7 1 12 1 13 1 15 1 17 1 21 1 22 1 24 2 1 2 4 2 5 2 7 2 12 2 16 2 19 2 22 2 24 3 7 3 8 3 13 3 20 3 22 4 8 4 12 4 14 4 19 5 2 5 3 5 4 5 6 5 7 5 10 5 13 5 14 5 19 5 24 6 3 6 7 6 8 6 10 6 12 6 13 6 15 6 17 6 19 6 21 6 23 6 24 7 2 7 6 7 8 7 9 7 10 7 12 7 13 7 16 7 23 8 1 8 9 8 11 8 12 8 13...
output:
1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111100111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 111...
result:
ok 100 lines
Test #4:
score: 0
Accepted
time: 2ms
memory: 7792kb
input:
100 4650 1 7 1 12 1 20 1 22 2 7 2 9 2 10 2 11 2 14 2 18 2 20 3 1 3 4 3 8 3 12 3 14 3 16 3 17 3 20 3 21 3 22 4 1 4 6 4 8 4 11 4 12 4 13 4 16 4 21 5 2 5 4 5 9 5 16 5 19 5 21 6 7 6 9 6 10 6 21 7 2 7 8 7 9 7 19 7 20 7 22 8 5 8 7 8 11 8 12 8 14 8 21 9 1 9 5 9 6 9 7 9 8 9 12 9 17 9 21 9 22 10 4 10 9 10 12...
output:
1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 111...
result:
ok 100 lines
Test #5:
score: 0
Accepted
time: 5ms
memory: 7744kb
input:
100 4945 1 2 1 3 1 5 1 7 1 8 1 9 1 10 1 13 1 15 2 1 2 3 2 4 2 9 2 11 2 12 2 15 3 1 3 10 3 12 3 16 4 1 4 5 4 10 4 12 4 13 4 15 4 16 5 6 5 11 5 16 5 17 6 2 6 10 6 11 6 14 7 1 7 2 7 3 7 4 7 5 7 6 7 8 7 9 7 10 7 11 7 16 7 21 7 22 7 23 7 24 7 25 7 27 7 28 7 30 7 31 7 32 7 35 7 38 7 39 8 1 8 2 8 3 8 4 8 5...
output:
1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1110101101 1111111111 1111111111 1111111111 1111111111 1100011011 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 111...
result:
ok 100 lines
Test #6:
score: 0
Accepted
time: 410ms
memory: 11416kb
input:
500 124582 1 12 1 14 2 4 2 7 2 9 2 13 2 14 2 18 3 1 3 4 3 7 3 14 3 17 4 1 4 3 4 6 4 12 4 15 4 18 5 3 6 1 6 3 6 8 6 10 6 11 6 13 6 15 6 17 6 18 7 3 7 4 7 5 7 8 7 9 7 17 8 2 8 6 9 10 9 13 9 17 10 2 10 5 10 17 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 9 11 10 11 17 11 18 11 19 11 26 12 1 12 2 12 3 12 ...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok 100000 lines
Test #7:
score: 0
Accepted
time: 410ms
memory: 11440kb
input:
500 125402 1 3 1 7 1 10 1 13 1 16 1 21 1 23 1 25 1 28 1 36 1 37 2 3 2 4 2 6 2 7 2 9 2 11 2 16 2 17 2 19 2 20 2 24 2 26 2 28 2 30 2 37 3 2 3 18 3 19 3 21 3 25 3 26 3 32 4 7 4 9 4 10 4 11 4 12 4 14 4 15 4 18 4 19 4 24 4 33 4 35 4 36 5 1 5 4 5 10 5 11 5 17 5 19 5 20 5 21 5 23 5 24 5 31 5 32 5 36 5 38 5...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok 100000 lines
Test #8:
score: 0
Accepted
time: 407ms
memory: 10216kb
input:
500 123930 1 6 1 11 1 13 1 16 1 22 1 25 1 26 1 34 1 38 1 41 1 42 1 43 1 44 1 46 1 48 1 49 1 51 1 53 1 56 2 6 2 9 2 13 2 15 2 24 2 31 2 33 2 36 2 37 2 43 2 44 2 50 2 53 2 56 3 2 3 4 3 5 3 16 3 18 3 19 3 25 3 31 3 32 3 40 3 43 3 44 3 47 3 48 3 50 3 51 3 53 4 1 4 2 4 3 4 5 4 6 4 8 4 14 4 18 4 20 4 26 4...
output:
0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 0 0 1 0 1 1 0 0 1 1 0 1 1 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 1 1 1 ...
result:
ok 100000 lines
Test #9:
score: 0
Accepted
time: 408ms
memory: 11128kb
input:
500 123484 1 5 1 8 1 10 1 11 1 12 1 20 1 23 1 26 1 27 1 28 1 29 1 31 1 33 1 41 2 4 2 7 2 10 2 18 2 20 2 34 2 35 2 39 2 41 2 42 2 44 2 46 2 52 3 4 3 5 3 6 3 7 3 9 3 14 3 17 3 19 3 23 3 25 3 26 3 32 3 36 3 38 3 39 3 40 3 44 3 46 3 48 3 51 4 1 4 7 4 11 4 12 4 14 4 16 4 17 4 19 4 21 4 23 4 24 4 25 4 29 ...
output:
0 0 1 1 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 1 1 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 0 0 1 0 0 0 1 0 1 0 ...
result:
ok 100000 lines
Test #10:
score: 0
Accepted
time: 1544ms
memory: 15440kb
input:
500 3278 2 5 2 7 3 5 4 6 4 9 5 6 5 7 5 8 6 8 6 9 6 10 7 8 7 9 8 9 9 13 9 20 9 22 9 23 9 24 9 27 9 29 9 31 10 12 10 14 10 17 10 21 10 23 10 24 10 25 10 26 10 27 11 15 11 17 11 20 11 21 11 25 12 16 12 20 12 21 12 22 12 24 12 28 12 32 12 33 12 39 12 42 12 45 12 46 12 47 12 48 13 14 13 20 13 21 13 23 13...
output:
1011111110 1010010110 0011111011 0101110101 0101011111 1111100001 1111111101 1110000110 1111111011 1111101011 1100101011 1110110111 1100111011 1110100100 1010011111 1111110111 0110111111 1111011100 1110011111 1001101000 1110100111 0111110111 1110111110 1101110001 1111010111 0100100011 1111010011 111...
result:
ok 400000 lines
Test #11:
score: 0
Accepted
time: 1511ms
memory: 14292kb
input:
500 3720 1 3 1 8 1 9 1 11 1 12 1 13 1 18 1 24 1 25 2 4 2 6 2 9 2 10 2 12 2 13 2 18 2 23 2 24 3 8 3 15 3 18 3 19 3 22 3 25 3 26 4 10 4 15 4 17 4 19 5 7 5 9 5 10 5 12 5 13 5 14 5 21 6 8 6 9 6 13 6 16 6 24 7 9 7 11 7 13 7 14 7 15 7 16 7 18 7 26 8 10 8 15 8 18 8 19 8 21 8 22 9 14 9 15 9 16 9 20 9 21 9 2...
output:
1111111101 1111111100 1110111110 1111111110 1111111111 1111111110 1101111011 1111111111 1111110111 1111111101 1111111111 0001010100 1111111111 1111111111 0011110111 1111111101 1111111111 1111111111 1110111111 1111111111 1011110011 1011111111 1111101101 1111111110 1111111111 1111111110 1111001111 110...
result:
ok 400000 lines
Test #12:
score: 0
Accepted
time: 1517ms
memory: 15640kb
input:
500 4232 1 2 1 6 1 14 1 16 2 4 2 6 2 10 2 16 2 17 2 18 2 25 2 26 2 28 3 4 3 6 3 12 3 13 3 17 3 18 3 25 4 8 4 12 4 18 4 23 4 28 5 8 5 9 5 10 5 12 5 13 5 17 5 18 5 21 5 26 5 28 6 8 6 9 6 12 6 23 6 24 6 25 6 26 6 27 6 29 7 15 7 23 7 24 7 25 7 28 8 12 8 14 8 16 8 19 8 29 9 12 9 13 9 15 9 16 9 17 9 20 9 ...
output:
1111011011 1111111111 1111111111 0111111011 1111111011 1110111111 0111111110 1110110111 1110001110 1011111111 0111111111 1111111111 1011111110 1111111111 1011111111 1111111111 1111011111 1111111011 1110111111 0111111111 0111110111 1111101111 0111110111 0111111111 1111111111 1111110011 1111111111 111...
result:
ok 400000 lines
Test #13:
score: 0
Accepted
time: 1531ms
memory: 14372kb
input:
500 6443 1 5 1 9 1 12 1 15 1 18 1 20 1 21 1 22 1 24 1 26 1 27 1 30 1 34 1 35 1 37 1 40 1 42 1 45 1 47 1 48 1 49 1 55 1 58 1 64 1 67 1 68 1 71 1 72 2 3 2 6 2 8 2 9 2 16 2 17 2 19 2 23 2 26 2 29 2 31 2 35 2 36 2 37 2 38 2 41 2 45 2 47 2 52 2 53 2 57 2 69 2 70 2 73 2 76 2 77 3 6 3 12 3 14 3 15 3 20 3 2...
output:
1001111111 0101111010 1111011111 1111111010 1111101111 0111111111 0110111111 1110111111 1111101101 1011111111 1111111111 1111111101 1110111110 1101111111 1011111111 1011111111 1111111111 1111110110 1111110101 1011111011 1111101110 1111111010 0011101101 1011111101 1111101111 1111100110 1101101000 111...
result:
ok 400000 lines
Test #14:
score: 0
Accepted
time: 1549ms
memory: 14608kb
input:
500 123824 2 4 2 6 3 1 3 10 4 2 4 6 4 7 4 8 5 2 5 3 5 4 5 7 5 8 5 11 6 7 7 3 7 5 7 6 7 8 7 11 8 2 8 4 9 1 9 2 9 3 9 4 9 5 9 6 9 7 9 8 9 12 9 14 9 17 9 21 9 23 9 24 9 25 9 26 9 27 10 1 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 13 10 15 10 18 10 19 10 23 11 1 11 2 11 3 11 4 11 5 11 6 11 7 11 8 11 10 11 15...
output:
0111110011 0110111111 1011001110 0101001011 0111110111 0011011000 1011110010 1000001101 1111000111 0101101111 1000001010 1010101010 0100000100 1011101110 1100011000 0000111110 0010100011 0110010101 1000111111 1101000001 0111110010 0011110100 0011101010 1001001111 0001010011 1010110110 0110111110 000...
result:
ok 400000 lines
Test #15:
score: 0
Accepted
time: 1495ms
memory: 15264kb
input:
500 124816 1 3 1 8 1 9 1 11 1 12 1 13 1 18 1 24 1 25 2 3 2 5 2 8 2 9 2 11 2 12 2 17 2 22 2 23 3 5 3 12 3 15 3 16 3 19 3 22 3 23 4 3 4 9 4 11 4 13 4 22 4 24 4 25 5 1 5 2 5 3 5 11 5 18 5 19 5 23 5 26 6 9 6 13 6 15 6 17 6 18 6 19 6 20 6 22 7 4 7 6 7 12 7 15 7 16 7 18 7 19 8 2 8 3 8 4 8 9 8 10 8 11 8 16...
output:
1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 111...
result:
ok 400000 lines
Test #16:
score: 0
Accepted
time: 1532ms
memory: 15480kb
input:
500 124872 1 2 1 6 1 14 1 16 2 1 2 4 2 6 2 10 2 16 2 17 2 18 2 25 2 26 2 28 3 1 3 2 3 5 3 11 3 12 3 16 3 17 3 24 4 1 4 5 4 9 4 15 4 20 4 25 4 30 5 1 5 2 5 3 5 6 5 7 5 11 5 12 5 15 5 20 5 22 5 26 5 27 5 30 6 1 6 13 6 14 6 15 6 16 6 17 6 19 6 28 7 1 7 8 7 9 7 10 7 13 7 19 7 21 7 23 7 26 8 1 8 7 8 12 8...
output:
0001111111 1101111010 1110011011 1011001101 0110111111 0000111000 1101010111 0101001111 1001101011 1111111101 1111110011 0010011010 0001000001 0101101111 1111000101 1100100001 0011010101 1010010110 0011111011 0000011011 1100010000 1011011011 1111010001 0110111011 0111000111 0111111000 1111000111 011...
result:
ok 400000 lines
Test #17:
score: 0
Accepted
time: 1509ms
memory: 15616kb
input:
500 124293 1 5 1 9 1 12 1 15 1 18 1 20 1 21 1 22 1 24 1 26 1 27 1 30 1 34 1 35 1 37 1 40 1 42 1 45 1 47 1 48 1 49 1 55 1 58 1 64 1 67 1 68 1 71 1 72 2 1 2 5 2 7 2 8 2 15 2 16 2 18 2 22 2 25 2 28 2 30 2 34 2 35 2 36 2 37 2 40 2 44 2 46 2 51 2 52 2 56 2 68 2 69 2 72 2 75 2 76 3 2 3 9 3 11 3 12 3 17 3 ...
output:
1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111111 1111111101 1111111111 1111111111 1111111111 1111111111 1100100100 1111111111 1111111111 1111111111 111...
result:
ok 400000 lines