# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
478884 | 2021-10-08T18:54:33 Z | rainboy | Wand (COCI19_wand) | C | 38 ms | 4760 KB |
#include <stdio.h> #include <stdlib.h> #define N 100000 int *ej[N], eo[N]; void append(int i, int j) { int o = eo[i]++; if (o >= 2 && (o & o - 1) == 0) ej[i] = (int *) realloc(ej[i], o * 2 * sizeof *ej[i]); ej[i][o] = j; } char visited[N + 1]; void dfs(int i) { int o; if (visited[i]) return; visited[i] = 1; for (o = eo[i]; o--; ) { int j = ej[i][o]; dfs(j); } } int main() { int n, m, i, j, o; scanf("%d%d", &n, &m); for (i = 0; i < n; i++) ej[i] = (int *) malloc(2 * sizeof *ej[i]); while (m--) { scanf("%d%d", &j, &i), i--, j--; append(i, j); } if (eo[0] == 0) visited[0] = 1; else for (o = eo[0]; o--; ) { j = ej[0][o]; dfs(j); } for (i = 0; i < n; i++) visited[i] += '0'; printf("%s\n", visited); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 204 KB | Output is correct |
2 | Correct | 0 ms | 204 KB | Output is correct |
3 | Correct | 23 ms | 4708 KB | Output is correct |
4 | Correct | 24 ms | 4576 KB | Output is correct |
5 | Correct | 38 ms | 4468 KB | Output is correct |
6 | Correct | 30 ms | 4416 KB | Output is correct |
7 | Correct | 24 ms | 4488 KB | Output is correct |
8 | Correct | 26 ms | 4584 KB | Output is correct |
9 | Correct | 25 ms | 4744 KB | Output is correct |
10 | Correct | 27 ms | 4760 KB | Output is correct |