QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#630549 | #4504. Book Club | jdelaure | AC ✓ | 15ms | 333508kb | C11 | 2.1kb | 2024-10-11 19:09:51 | 2024-10-11 19:09:52 |
Judging History
answer
#include <stdint.h>
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
uint16_t graphAsArray[20002][20002];
uint16_t graphNbEdges[20002];
uint16_t path[20002];
int nbPeople;
uint16_t getEdgeIndex(uint16_t src, uint16_t dst) {
for (uint16_t i = 0; i < graphNbEdges[src]; i++) {
if (graphAsArray[src][i] == dst) {
return i;
}
}
return (uint16_t)-1;
}
void addEdge(uint16_t src, uint16_t dst) {
uint16_t index = graphNbEdges[src]++;
graphAsArray[src][index] = dst;
}
void removeEdge(uint16_t src, uint16_t dst) {
uint16_t index = getEdgeIndex(src, dst);
uint16_t replace = --graphNbEdges[src];
graphAsArray[src][index] = graphAsArray[src][replace];
}
bool searchPath(uint16_t source, uint16_t target) {
if (source == target)
return true;
for (int i = 0; i < graphNbEdges[source]; i++) {
uint16_t dst = graphAsArray[source][i];
if (path[dst] == (uint16_t)-1) {
path[dst] = source;
if (searchPath(dst, target))
return true;
}
}
return false;
}
int fordFulkerson(uint16_t source, uint16_t target) {
uint16_t u, v;
int maxFlow = 0;
for (;;) {
memset(path, -1, sizeof(path));
if (!searchPath(source, target))
break;
v = target;
while (v != source) {
u = path[v];
removeEdge(u, v);
addEdge(v, u);
v = path[v];
}
maxFlow++;
}
return maxFlow;
}
int main(void) {
int nbDeclarations;
int person, preference;
scanf("%d %d", &nbPeople, &nbDeclarations);
for (int i = 0; i < nbDeclarations; i++) {
scanf("%d %d", &person, &preference);
addEdge(person*2, preference*2+1);
}
for (int i = 0; i < nbPeople; i++) {
addEdge(nbPeople*2, i*2);
addEdge(i*2+1, nbPeople*2+1);
}
int result = fordFulkerson(nbPeople*2, nbPeople*2+1);
if (result == nbPeople) {
printf("YES\n");
} else {
printf("NO\n");
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 1572kb
input:
5 5 0 1 1 2 2 3 3 4 4 0
output:
YES
result:
ok single line: 'YES'
Test #2:
score: 0
Accepted
time: 4ms
memory: 79716kb
input:
1000 5000 0 271 0 320 0 325 0 378 0 562 0 942 0 957 1 88 1 235 1 271 1 579 1 604 1 751 1 875 1 929 2 70 2 403 2 470 2 909 2 912 3 352 3 657 3 810 4 201 4 361 4 414 4 418 4 505 4 531 4 597 4 833 5 14 5 123 5 281 5 878 5 938 6 311 6 392 6 564 6 994 7 246 7 353 7 372 7 710 7 751 7 772 8 149 8 435 8 682...
output:
NO
result:
ok single line: 'NO'
Test #3:
score: 0
Accepted
time: 4ms
memory: 305908kb
input:
10000 10000 0 3378 1 8751 2 9999 3 7769 4 6001 5 9998 6 9311 7 9996 8 7722 9 1572 10 9994 11 3865 12 186 13 7614 14 9992 15 9991 16 4424 17 9807 18 5031 19 7909 20 4994 21 292 22 9990 23 8180 24 5837 25 9989 26 9554 27 7552 28 8027 29 5135 30 9988 31 4067 32 702 33 9984 34 8831 35 6971 36 7354 37 81...
output:
YES
result:
ok single line: 'YES'
Test #4:
score: 0
Accepted
time: 4ms
memory: 305956kb
input:
10000 10000 0 3378 1 8751 2 9999 3 7769 4 6001 5 9998 6 9311 7 9996 8 7722 9 1572 10 9994 11 3865 12 186 13 7614 14 9992 15 9991 16 4424 17 9807 18 5031 19 7909 20 4994 21 292 22 9990 23 8180 24 5837 25 9989 26 9554 27 7552 28 8027 29 5135 30 9988 31 4067 32 702 33 9984 34 8831 35 6971 36 7354 37 81...
output:
NO
result:
ok single line: 'NO'
Test #5:
score: 0
Accepted
time: 15ms
memory: 305920kb
input:
10000 20000 0 3378 0 6398 1 3271 1 6775 1 8751 2 9999 3 7769 4 1201 4 6001 4 6908 5 9997 6 9311 7 9995 8 2240 8 7722 9 1572 10 9994 11 3865 12 186 12 6999 12 8543 13 6075 13 6124 13 7614 13 8433 14 9986 15 3587 16 1761 16 3977 16 4424 16 5036 16 8714 16 9441 17 2109 17 9807 18 3502 18 5031 19 7909 2...
output:
NO
result:
ok single line: 'NO'
Test #6:
score: 0
Accepted
time: 11ms
memory: 333508kb
input:
10000 20000 0 3378 0 6398 1 3271 1 6775 1 8751 2 9999 3 7769 4 1201 4 6001 4 6908 5 9997 6 9311 7 9995 8 2240 8 7722 9 1572 10 9994 11 3865 12 186 12 6999 12 8543 13 6075 13 6124 13 7614 13 8433 14 9986 15 3587 16 1761 16 3977 16 4424 16 5036 16 8714 16 9441 17 2109 17 9807 18 3502 18 5031 19 7909 2...
output:
YES
result:
ok single line: 'YES'
Test #7:
score: 0
Accepted
time: 0ms
memory: 1596kb
input:
3 4 0 1 1 0 0 2 2 0
output:
NO
result:
ok single line: 'NO'
Test #8:
score: 0
Accepted
time: 0ms
memory: 1620kb
input:
5 4 0 1 1 2 2 3 3 4
output:
NO
result:
ok single line: 'NO'
Test #9:
score: 0
Accepted
time: 0ms
memory: 3620kb
input:
9 9 0 1 1 2 2 0 3 4 4 5 5 3 6 7 7 8 8 6
output:
YES
result:
ok single line: 'YES'
Test #10:
score: 0
Accepted
time: 0ms
memory: 3628kb
input:
5 12 0 1 0 2 0 3 1 0 1 2 1 3 2 0 2 1 2 3 3 0 3 1 3 2
output:
NO
result:
ok single line: 'NO'
Test #11:
score: 0
Accepted
time: 0ms
memory: 1660kb
input:
5 16 0 1 0 2 0 3 1 0 1 2 1 3 2 0 2 1 2 3 3 0 3 1 3 2 4 0 4 1 4 2 4 3
output:
NO
result:
ok single line: 'NO'
Test #12:
score: 0
Accepted
time: 0ms
memory: 3676kb
input:
5 16 0 1 0 2 0 3 1 0 1 2 1 3 2 0 2 1 2 3 3 0 3 1 3 2 0 4 1 4 2 4 3 4
output:
NO
result:
ok single line: 'NO'
Test #13:
score: 0
Accepted
time: 0ms
memory: 79580kb
input:
1000 1000 0 325 1 998 2 997 3 995 4 833 5 14 6 994 7 993 8 722 9 173 10 480 11 634 12 209 13 757 14 992 15 506 16 224 17 807 18 470 19 991 20 989 21 266 22 58 23 761 24 88 25 388 26 300 27 987 28 27 29 559 30 985 31 117 32 154 33 984 34 764 35 951 36 808 37 537 38 979 39 2 40 977 41 848 42 624 43 75...
output:
YES
result:
ok single line: 'YES'
Test #14:
score: 0
Accepted
time: 0ms
memory: 79492kb
input:
1000 1000 0 325 1 998 2 997 3 995 4 833 5 14 6 994 7 993 8 722 9 173 10 480 11 634 12 209 13 757 14 992 15 506 16 224 17 807 18 470 19 991 20 989 21 266 22 58 23 761 24 88 25 388 25 936 26 300 27 987 28 27 29 559 30 985 31 117 32 154 33 984 34 764 35 951 36 808 37 537 38 979 39 2 40 977 41 848 42 62...
output:
NO
result:
ok single line: 'NO'
Test #15:
score: 0
Accepted
time: 3ms
memory: 79608kb
input:
1000 10000 0 271 0 320 0 325 0 378 0 562 0 569 0 633 0 657 0 728 0 737 0 942 0 957 1 31 1 75 1 88 1 183 1 213 1 235 1 256 1 271 1 579 1 604 1 751 1 869 1 875 1 929 2 70 2 403 2 470 2 909 2 912 2 965 2 998 3 303 3 352 3 641 3 657 3 769 3 810 3 841 3 921 4 1 4 63 4 174 4 201 4 319 4 358 4 361 4 365 4 ...
output:
YES
result:
ok single line: 'YES'