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 / 1OK / 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;
}
}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#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
AC × 1
AC × 21
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


2026-06-29 (Mon)
22:32:08 +09:00