37 lines
681 B
Python
37 lines
681 B
Python
|
import sys
|
||
|
from collections import defaultdict as DD
|
||
|
|
||
|
|
||
|
D = DD(set)
|
||
|
S = set()
|
||
|
for i in sys.stdin.read().strip().split('\n'):
|
||
|
a, b = i.split("-")
|
||
|
D[a].add(b)
|
||
|
D[b].add(a)
|
||
|
S.add(a)
|
||
|
S.add(b)
|
||
|
|
||
|
G = set()
|
||
|
m = 0
|
||
|
def grow(group:set[str], l:int):
|
||
|
global m
|
||
|
key = ','.join(sorted(group))
|
||
|
if key in G:
|
||
|
return
|
||
|
G.add(key)
|
||
|
if l>m:
|
||
|
print(l, key)
|
||
|
m = l
|
||
|
rest = S - group
|
||
|
for r in rest:
|
||
|
if len(group & D[r]) == l:
|
||
|
ng = group.copy()
|
||
|
ng.add(r)
|
||
|
yield (l+1, ng)
|
||
|
yield from grow(ng, l+1)
|
||
|
|
||
|
for a, B in D.items():
|
||
|
for b in B:
|
||
|
for i,s in grow({a,b},2):
|
||
|
pass
|