QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#129179 | #4635. Graph Operation | nhuang685 | WA | 62ms | 3704kb | C++20 | 2.6kb | 2023-07-22 05:02:41 | 2023-07-22 05:02:44 |
Judging History
answer
/**
* @file qoj4635F1.cpp
* @author n685
* @brief
* @date 2023-07-21
*
*
*/
#include <bits/stdc++.h>
#ifdef LOCAL
std::ifstream cin;
std::ofstream cout;
using std::cerr;
#else
using std::cin;
using std::cout;
#define cerr \
if (false) \
std::cerr
#endif
struct Q {
int a, b, c, d;
};
std::ostream &operator<<(std::ostream &out, const Q &q) {
out << q.a + 1 << ' ' << q.b + 1 << ' ' << q.c + 1 << ' ' << q.d + 1;
return out;
}
const int MX = 1000;
// const int MX = 6;
int main() {
#ifdef LOCAL
cin.open("input.txt");
cout.rdbuf()->pubsetbuf(0, 0);
cout.open("output.txt");
#else
cin.tie(nullptr)->sync_with_stdio(false);
#endif
int n, m;
cin >> n >> m;
std::vector<std::bitset<MX>> g(n), h(n);
for (int i = 0; i < m; ++i) {
int u, v;
cin >> u >> v;
u--, v--;
g[u][v] = 1;
g[v][u] = 1;
}
for (int i = 0; i < m; ++i) {
int u, v;
cin >> u >> v;
u--, v--;
h[u][v] = 1;
h[v][u] = 1;
}
for (int i = 0; i < n; ++i) {
if (g[i].count() != h[i].count()) {
cout << "-1\n";
return 0;
}
}
std::vector<Q> gg, hh;
for (int i = 0; i < n; ++i) {
auto gnh = g[i] & (~h[i]);
auto hng = h[i] & (~g[i]);
int v = (int)gnh._Find_first(), w = (int)hng._Find_first();
while (v != MX && w != MX) {
auto nvw = (~g[v] & g[w]);
int t = (int)nvw._Find_first();
while ((t == i || t == v || t == w) && t != MX)
t = (int)nvw._Find_next(t);
if (t != MX) {
gg.push_back({i, v, w, t});
g[i][v] = 0;
g[v][i] = 0;
g[i][w] = 1;
g[w][i] = 1;
g[t][w] = 0;
g[w][t] = 0;
g[t][v] = 1;
g[v][t] = 1;
} else {
auto vnw = (h[v] & ~h[w]);
t = (int)(h[v] & ~h[w])._Find_first();
while ((t == i || t == v || t == w) && t != MX)
t = (int)vnw._Find_next(t);
assert(t != MX);
hh.push_back({i, w, v, t});
h[i][w] = 0;
h[w][i] = 0;
h[i][v] = 1;
h[v][i] = 1;
h[t][v] = 0;
h[v][t] = 0;
h[t][w] = 1;
h[w][t] = 1;
}
gnh = g[i] & (~h[i]);
hng = h[i] & (~g[i]);
v = (int)gnh._Find_first(), w = (int)hng._Find_first();
}
}
cout << gg.size() + hh.size() << '\n';
for (auto &a : gg)
cout << a << '\n';
for (auto &b : hh | std::views::reverse)
cout << b << '\n';
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 3480kb
input:
4 2 1 2 3 4 1 3 2 4
output:
1 1 2 3 4
result:
ok n=4
Test #2:
score: 0
Accepted
time: 0ms
memory: 3528kb
input:
6 12 1 2 3 5 4 6 1 4 1 5 1 6 2 3 2 5 2 6 3 4 3 6 4 5 1 3 2 4 5 6 1 4 1 5 1 6 2 3 2 5 2 6 3 4 3 6 4 5
output:
2 1 2 3 4 3 5 4 6
result:
ok n=6
Test #3:
score: 0
Accepted
time: 1ms
memory: 3460kb
input:
4 0
output:
0
result:
ok n=4
Test #4:
score: 0
Accepted
time: 1ms
memory: 3456kb
input:
10 0
output:
0
result:
ok n=10
Test #5:
score: 0
Accepted
time: 1ms
memory: 3548kb
input:
100 0
output:
0
result:
ok n=100
Test #6:
score: 0
Accepted
time: 1ms
memory: 3652kb
input:
1000 0
output:
0
result:
ok n=1000
Test #7:
score: 0
Accepted
time: 1ms
memory: 3456kb
input:
4 6 4 1 1 2 1 3 4 3 3 2 4 2 4 1 4 2 4 3 3 2 1 3 1 2
output:
0
result:
ok n=4
Test #8:
score: 0
Accepted
time: 1ms
memory: 3460kb
input:
10 45 7 5 6 1 3 8 9 7 8 1 2 1 7 1 10 9 4 5 6 5 8 6 3 1 5 1 3 6 4 9 6 9 9 1 10 6 4 6 10 2 4 7 4 8 2 5 10 5 3 4 3 7 10 8 8 2 3 10 4 1 4 2 2 9 2 7 8 7 10 1 8 5 6 7 2 6 10 7 9 5 3 9 3 5 8 9 3 2 4 10 3 5 4 6 9 5 7 5 2 9 6 5 4 5 4 1 3 10 8 9 8 6 10 7 3 9 8 2 9 7 8 7 10 8 10 1 2 7 3 6 2 6 3 2 4 2 2 5 10 9 ...
output:
0
result:
ok n=10
Test #9:
score: 0
Accepted
time: 2ms
memory: 3488kb
input:
100 4950 15 37 36 56 57 64 66 63 35 70 8 65 25 36 1 27 6 74 79 22 35 34 79 70 53 74 41 63 7 40 41 22 99 93 96 70 35 30 20 67 48 65 100 21 8 4 75 87 80 10 82 38 7 10 85 77 42 77 28 64 73 60 20 74 73 86 24 31 73 44 97 93 8 74 48 19 63 42 41 57 25 79 13 19 96 39 59 44 81 20 66 2 8 37 34 23 88 27 12 14 ...
output:
0
result:
ok n=100
Test #10:
score: 0
Accepted
time: 59ms
memory: 3644kb
input:
1000 499500 90 844 735 814 874 452 191 64 745 192 489 653 998 227 104 125 296 644 285 190 831 763 70 776 981 126 213 964 306 137 199 965 849 5 717 70 329 305 196 836 909 527 222 367 323 554 384 900 496 797 620 860 18 823 929 135 589 207 947 354 461 271 22 914 456 403 263 362 908 870 30 384 995 996 3...
output:
0
result:
ok n=1000
Test #11:
score: 0
Accepted
time: 62ms
memory: 3616kb
input:
1000 499500 561 780 496 694 698 721 598 412 55 527 799 952 790 473 980 139 375 308 605 850 670 77 77 908 958 436 379 504 293 452 735 666 223 901 944 455 554 123 644 817 723 68 157 867 527 755 380 937 904 851 614 666 299 131 369 83 61 651 820 239 432 583 588 869 500 542 502 996 305 43 601 882 277 337...
output:
0
result:
ok n=1000
Test #12:
score: 0
Accepted
time: 1ms
memory: 3540kb
input:
4 6 4 3 1 3 2 3 4 2 4 1 2 1 2 3 4 1 4 2 4 3 2 1 1 3
output:
0
result:
ok n=4
Test #13:
score: 0
Accepted
time: 1ms
memory: 3496kb
input:
4 5 2 4 4 1 4 3 2 1 3 1 2 4 2 1 4 3 4 1 3 1
output:
0
result:
ok n=4
Test #14:
score: 0
Accepted
time: 1ms
memory: 3524kb
input:
10 21 2 10 8 4 4 9 10 4 6 10 8 9 3 5 7 9 10 5 2 1 2 8 3 10 6 1 10 7 6 7 4 1 3 4 5 1 8 1 2 5 5 7 3 4 3 9 5 8 2 4 2 5 3 1 10 1 3 5 6 1 6 2 3 6 6 8 3 10 2 9 2 8 3 7 6 7 5 7 2 10 5 4 10 5
output:
-1
result:
ok n=10
Test #15:
score: 0
Accepted
time: 1ms
memory: 3496kb
input:
10 3 2 8 2 10 2 9 2 5 2 6 2 7
output:
-1
result:
ok n=10
Test #16:
score: 0
Accepted
time: 1ms
memory: 3524kb
input:
10 33 2 4 2 6 8 1 5 1 7 1 6 1 6 10 3 6 8 2 3 4 5 10 8 9 7 10 2 10 4 1 3 8 4 10 1 9 4 9 8 10 6 4 2 7 1 10 10 9 2 9 2 1 8 4 6 7 4 7 7 9 5 9 6 9 5 6 4 10 1 9 5 2 6 4 2 1 5 7 7 10 2 7 5 10 8 9 6 9 10 9 7 1 3 6 4 1 2 10 7 9 8 2 2 9 3 2 2 4 6 7 1 10 5 8 4 7 3 9 6 10 3 10 8 10 8 4 6 1 8 6 4 9
output:
-1
result:
ok n=10
Test #17:
score: 0
Accepted
time: 1ms
memory: 3488kb
input:
100 149 97 53 14 62 97 60 14 58 85 69 14 63 97 99 14 71 97 88 85 47 14 61 14 43 97 44 97 17 14 39 85 17 20 99 97 73 85 31 85 67 85 12 14 24 14 69 14 96 97 76 97 95 97 11 85 79 85 19 85 70 85 6 14 56 14 12 85 98 85 53 85 76 85 26 20 37 97 35 97 70 20 96 97 82 97 34 85 94 14 46 97 54 97 43 97 4 85 2 8...
output:
-1
result:
ok n=100
Test #18:
score: 0
Accepted
time: 2ms
memory: 3608kb
input:
100 4631 2 12 66 70 81 62 5 66 94 2 92 64 62 96 58 39 34 3 21 96 52 15 23 67 62 29 38 18 72 56 67 50 81 70 38 42 81 68 99 22 61 42 30 71 32 93 46 95 27 72 97 37 27 2 46 73 65 2 94 22 33 11 64 73 44 5 48 13 65 16 24 44 61 15 34 71 40 1 60 87 100 66 84 33 81 7 14 69 57 83 63 79 23 96 34 15 72 41 47 12...
output:
-1
result:
ok n=100
Test #19:
score: 0
Accepted
time: 25ms
memory: 3592kb
input:
1000 261943 229 141 480 681 189 131 575 202 700 642 405 254 845 739 920 506 838 6 366 32 886 326 124 749 375 702 426 316 843 800 736 845 752 171 744 236 169 313 612 804 675 808 230 804 454 695 617 445 606 481 766 254 140 421 483 155 775 115 617 583 710 417 936 649 329 53 526 979 833 382 464 327 475 ...
output:
-1
result:
ok n=1000
Test #20:
score: 0
Accepted
time: 9ms
memory: 3704kb
input:
1000 48821 306 916 554 937 602 467 778 306 291 993 446 28 561 538 566 718 833 139 857 553 738 128 153 811 350 290 458 146 211 897 158 828 925 574 291 91 530 933 833 387 773 926 554 776 900 41 158 186 877 717 975 113 360 451 375 101 980 364 96 203 492 953 29 280 469 540 153 604 44 911 601 229 469 858...
output:
-1
result:
ok n=1000
Test #21:
score: 0
Accepted
time: 0ms
memory: 3528kb
input:
4 1 4 1 4 1
output:
0
result:
ok n=4
Test #22:
score: 0
Accepted
time: 1ms
memory: 3452kb
input:
6 5 6 3 5 6 2 6 2 3 6 4 6 5 6 4 6 2 2 3 6 3
output:
0
result:
ok n=6
Test #23:
score: 0
Accepted
time: 1ms
memory: 3528kb
input:
6 1 3 1 1 2
output:
-1
result:
ok n=6
Test #24:
score: -100
Wrong Answer
time: 1ms
memory: 3528kb
input:
10 34 7 2 8 10 10 9 6 1 6 5 2 4 6 4 2 5 7 4 2 3 9 4 1 5 6 3 2 1 3 4 4 5 3 5 8 4 7 6 8 1 6 9 10 5 10 4 7 9 3 9 2 9 3 1 1 4 10 6 8 2 8 7 6 2 9 5 1 9 6 2 4 9 4 2 7 8 2 10 4 10 4 8 4 1 2 1 4 7 6 9 6 1 5 8 4 6 1 3 9 7 6 3 9 10 2 5 4 5 6 8 9 5 5 7 2 3 1 10 2 9 4 3 2 8 3 10 1 5 9 1 6 7 6 5 9 3
output:
5 1 8 10 5 2 7 10 1 5 6 7 8 7 1 8 10 3 10 5 6
result:
wrong answer a and b must be adjacent! round 5 : a,b,c,d = 3,10,5,6