blob: fbfda57fdaa73c40fb593013918199c95d41e5ed (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static struct Node {
char name[4];
size_t parent;
} tree[2048];
static size_t node(const char *name) {
size_t i;
for (i = 0; tree[i].name[0]; ++i) {
if (strcmp(name, tree[i].name)) continue;
return i;
}
strncpy(tree[i].name, name, sizeof(tree[i].name));
return i;
}
static size_t ancestors(size_t i) {
size_t n = 0;
while (i) {
i = tree[i].parent;
n++;
}
return n;
}
int main(void) {
node("COM");
char parent[4], child[4];
while (EOF != scanf("%3s)%3s\n", parent, child)) {
tree[node(child)].parent = node(parent);
}
size_t orbits = 0;
for (size_t i = 0; tree[i].name[0]; ++i) {
orbits += ancestors(i);
}
printf("%zu\n", orbits);
}
|