Жуков Александр Сергеевич MroC3 12585
Павленко Дмитрий Юльевич, 411 группа MroC3 12492
n1def linear(name, list_):n1def linear(name, lst):
2    res = [name]2    res = [name]
n3    while len(list_) != 0:n3    while len(lst) != 0:
4        l = len(list_)4        l = len(lst)
5        i = 05        i = 0
6        flag = True6        flag = True
n7        cl = list_[i][0]n7        cl = lst[i][0]
8        chosen = [cl]8        chosen = [cl]
9        k = 09        k = 0
10        while k < l:10        while k < l:
n11            if k != i and cl != list_[k][0] and (cl in list_[k]):n11            if k != i and cl != lst[k][0] and (cl in lst[k]):
12                i = k12                i = k
n13                cl = list_[i][0]n13                cl = lst[i][0]
14                if cl in chosen:14                if cl in chosen:
15                    return ([], False)15                    return ([], False)
16                chosen.append(cl)16                chosen.append(cl)
17                k = int(not i)17                k = int(not i)
18            else:18            else:
19                k += 119                k += 1
20        res.append(cl)20        res.append(cl)
21        for i in range(l - 1, -1, -1):21        for i in range(l - 1, -1, -1):
n22            if list_[i][0] == cl:n22            if lst[i][0] == cl:
23                if len(list_[i]) == 1:23                if len(lst[i]) == 1:
24                    del list_[i]24                    del lst[i]
25                else:25                else:
n26                    del list_[i][0]n26                    del lst[i][0]
27    return (res, True)27    return (res, True)
28ans = True28ans = True
29lin = dict()29lin = dict()
30names = dict()30names = dict()
n31while ans and (a := input()):n31while ans and (tmp := input()):
32    if a[:5] != 'class':32    if tmp[:5] != 'class':
33        continue33        continue
n34    a = a[6:a.find(':')]n34    tmp = tmp[6:tmp.find(':')]
35    if not a[-1] == ')':35    if not tmp[-1] == ')':
36        val = len(names)36        val = len(names)
n37        names[a] = valn37        names[tmp] = val
38        lin[val] = [val]38        lin[val] = [val]
39        continue39        continue
n40    i1 = a.find('(')n40    i1 = tmp.find('(')
41    name = a[:i1]41    name = tmp[:i1]
42    val = len(names)42    val = len(names)
43    names[name] = val43    names[name] = val
n44    a = a[i1 + 1:-1]n44    tmp = tmp[i1 + 1:-1]
45    a = a.replace(' ', '')45    tmp = tmp.replace(' ', '')
46    par = a.split(',')46    parents = tmp.split(',')
47    par = [names[i] for i in par]47    parents = [names[i] for i in parents]
48    list_ = []48    lst = []
49    for i in par:49    for i in parents:
50        if not i in lin:50        if not i in lin:
51            ans = False51            ans = False
52            break52            break
n53        list_.append(list(lin[i]))n53        lst.append(list(lin[i]))
54    if ans:54    if ans:
t55        list_.append(par)t55        lst.append(parents)
56        (lin[val], ans) = linear(val, list_)56        (lin[val], ans) = linear(val, lst)
57if ans:57if ans:
58    print('Yes')58    print('Yes')
59else:59else:
60    print('No')60    print('No')
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op