class Kamus:
def __init__(self):
self.data = {}
def tambah(self, kata, sinonim):
for s in sinonim:
if s == kata:
continue
self._hubungkan(kata, s)
self._hubungkan(s, kata)
def ambilSinonim(self, kata):
if kata not in self.data:
return None
return list(self.data[kata])
def _hubungkan(self, a, b):
if a not in self.data:
self.data[a] = []
if b not in self.data[a]:
self.data[a].append(b)
kamus = Kamus()
kamus.tambah('big', ['large', 'great'])
kamus.tambah('big', ['huge', 'fat'])
kamus.tambah('huge', ['enormous', 'gigantic'])
print(kamus.ambilSinonim('big')) # ['large', 'great', 'huge', 'fat']
print(kamus.ambilSinonim('huge')) # ['big', 'enormous', 'gigantic']
print(kamus.ambilSinonim('gigantic')) # ['huge']
print(kamus.ambilSinonim('colossal')) # None
Y2xhc3MgS2FtdXM6CiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5kYXRhID0ge30KCiAgICBkZWYgdGFtYmFoKHNlbGYsIGthdGEsIHNpbm9uaW0pOgogICAgICAgIGZvciBzIGluIHNpbm9uaW06CiAgICAgICAgICAgIGlmIHMgPT0ga2F0YToKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIHNlbGYuX2h1YnVuZ2thbihrYXRhLCBzKQogICAgICAgICAgICBzZWxmLl9odWJ1bmdrYW4ocywga2F0YSkKCiAgICBkZWYgYW1iaWxTaW5vbmltKHNlbGYsIGthdGEpOgogICAgICAgIGlmIGthdGEgbm90IGluIHNlbGYuZGF0YToKICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4gbGlzdChzZWxmLmRhdGFba2F0YV0pCgogICAgZGVmIF9odWJ1bmdrYW4oc2VsZiwgYSwgYik6CiAgICAgICAgaWYgYSBub3QgaW4gc2VsZi5kYXRhOgogICAgICAgICAgICBzZWxmLmRhdGFbYV0gPSBbXQogICAgICAgIGlmIGIgbm90IGluIHNlbGYuZGF0YVthXToKICAgICAgICAgICAgc2VsZi5kYXRhW2FdLmFwcGVuZChiKQoKCmthbXVzID0gS2FtdXMoKQprYW11cy50YW1iYWgoJ2JpZycsIFsnbGFyZ2UnLCAnZ3JlYXQnXSkKa2FtdXMudGFtYmFoKCdiaWcnLCBbJ2h1Z2UnLCAnZmF0J10pCmthbXVzLnRhbWJhaCgnaHVnZScsIFsnZW5vcm1vdXMnLCAnZ2lnYW50aWMnXSkKCnByaW50KGthbXVzLmFtYmlsU2lub25pbSgnYmlnJykpICAgICAgICMgWydsYXJnZScsICdncmVhdCcsICdodWdlJywgJ2ZhdCddCnByaW50KGthbXVzLmFtYmlsU2lub25pbSgnaHVnZScpKSAgICAgICMgWydiaWcnLCAnZW5vcm1vdXMnLCAnZ2lnYW50aWMnXQpwcmludChrYW11cy5hbWJpbFNpbm9uaW0oJ2dpZ2FudGljJykpICAjIFsnaHVnZSddCnByaW50KGthbXVzLmFtYmlsU2lub25pbSgnY29sb3NzYWwnKSkgICMgTm9uZQ==