24 lines
602 B
Python
24 lines
602 B
Python
from collections import defaultdict as DD
|
|
import sys
|
|
|
|
G = DD(set)
|
|
|
|
for line in sys.stdin.read().strip().split('\n'):
|
|
a, b = line.split('-')
|
|
G[a].add(b)
|
|
G[b].add(a)
|
|
|
|
def bron_kerbosch(r, p, x):
|
|
if len(p) == 0 and len(x) == 0:
|
|
yield r
|
|
else:
|
|
pivot = max(p | x, key=lambda x: len(G[x]))
|
|
for v in p - G[pivot]:
|
|
neighbours = G[v]
|
|
yield from bron_kerbosch(r | {v}, p & neighbours, x & neighbours)
|
|
p.remove(v)
|
|
x.add(v)
|
|
|
|
clique = max(bron_kerbosch(set(), set(G.keys()), set()), key=len)
|
|
print(','.join(sorted(clique)))
|