Submission #77078417
Source Code Expand
Copy
#include <stdio.h>#include <stdlib.h>int N, M;int W;char S[114514][16];int ec[114514], *es[114514];void ae(int f, int t) {es[f] = realloc(es[f], sizeof(*es[f]) * (ec[f] + 1));es[f][ec[f]++] = t;}int T;int tc;char ok_memo[114514][16]; /* 0:ダメ / 1:OK / 2:調査中 */int gen[114514][16];int calc(int node, int day) {if (day >= W) day = 0;if (gen[node][day] == tc) {return ok_memo[node][day] != 0;} else {int ok = 0;int i;gen[node][day] = tc;ok_memo[node][day] = 2;if (S[node][day] != 'o') {ok_memo[node][day] = 0;return 0;}ok = ok || calc(node, day + 1);for (i = 0; i < ec[node]; i++) {ok = ok || calc(es[node][i], day + 1);}ok_memo[node][day] = ok;return ok;}}
#include <stdio.h>
#include <stdlib.h>
int N, M;
int W;
char S[114514][16];
int ec[114514], *es[114514];
void ae(int f, int t) {
es[f] = realloc(es[f], sizeof(*es[f]) * (ec[f] + 1));
es[f][ec[f]++] = t;
}
int T;
int tc;
char ok_memo[114514][16]; /* 0:ダメ / 1:OK / 2:調査中 */
int gen[114514][16];
int calc(int node, int day) {
if (day >= W) day = 0;
if (gen[node][day] == tc) {
return ok_memo[node][day] != 0;
} else {
int ok = 0;
int i;
gen[node][day] = tc;
ok_memo[node][day] = 2;
if (S[node][day] != 'o') {
ok_memo[node][day] = 0;
return 0;
}
ok = ok || calc(node, day + 1);
for (i = 0; i < ec[node]; i++) {
ok = ok || calc(es[node][i], day + 1);
}
ok_memo[node][day] = ok;
return ok;
}
}
int main(void) {
if (scanf("%d", &T) != 1) return 1;
for (tc = 1; tc <= T; tc++) {
int i;
int ok = 0;
if (scanf("%d%d", &N, &M) != 2) return 1;
for (i = 0; i < M; i++) {
int U, V;
if (scanf("%d%d", &U, &V) != 2) return 1;
ae(U, V);
ae(V, U);
}
if (scanf("%d", &W) != 1) return 1;
for (i = 1; i <= N; i++) {
if (scanf("%15s", S[i]) != 1) return 1;
}
for (i = 1; i <= N; i++) {
ok = ok || calc(i, 0);
}
puts(ok ? "Yes" : "No");
for (i = 1; i <= N; i++) {
ec[i] = 0;
free(es[i]);
es[i] = NULL;
}
}
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | E - Endless Holidays |
| User | mikecat |
| Language | C23 (GCC 14.2.0) |
| Score | 450 |
| Code Size | 1384 Byte |
| Status | AC |
| Exec Time | 47 ms |
| Memory | 38692 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 450 / 450 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_01.txt |
| All | 00_sample_01.txt, 01_small_random_01.txt, 01_small_random_02.txt, 01_small_random_03.txt, 01_small_random_04.txt, 02_medium_random_01.txt, 02_medium_random_02.txt, 02_medium_random_03.txt, 02_medium_random_04.txt, 03_large_sparse_01.txt, 03_large_sparse_02.txt, 03_large_sparse_03.txt, 03_large_sparse_04.txt, 04_long_01.txt, 04_long_02.txt, 04_long_03.txt, 04_long_04.txt, 05_hand_01.txt, 05_hand_02.txt, 05_hand_03.txt, 05_hand_04.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_01.txt | AC | 1 ms | 1604 KiB |
| 01_small_random_01.txt | AC | 14 ms | 1744 KiB |
| 01_small_random_02.txt | AC | 15 ms | 1744 KiB |
| 01_small_random_03.txt | AC | 15 ms | 1812 KiB |
| 01_small_random_04.txt | AC | 15 ms | 1732 KiB |
| 02_medium_random_01.txt | AC | 16 ms | 3032 KiB |
| 02_medium_random_02.txt | AC | 16 ms | 3092 KiB |
| 02_medium_random_03.txt | AC | 15 ms | 3052 KiB |
| 02_medium_random_04.txt | AC | 16 ms | 3024 KiB |
| 03_large_sparse_01.txt | AC | 18 ms | 4328 KiB |
| 03_large_sparse_02.txt | AC | 17 ms | 4312 KiB |
| 03_large_sparse_03.txt | AC | 17 ms | 3908 KiB |
| 03_large_sparse_04.txt | AC | 20 ms | 4304 KiB |
| 04_long_01.txt | AC | 23 ms | 7000 KiB |
| 04_long_02.txt | AC | 22 ms | 6992 KiB |
| 04_long_03.txt | AC | 23 ms | 6660 KiB |
| 04_long_04.txt | AC | 22 ms | 7020 KiB |
| 05_hand_01.txt | AC | 43 ms | 26992 KiB |
| 05_hand_02.txt | AC | 47 ms | 38692 KiB |
| 05_hand_03.txt | AC | 22 ms | 7572 KiB |
| 05_hand_04.txt | AC | 19 ms | 1572 KiB |