using System;
using System.Collections.Generic;
class Kamus{
private Dictionary<string, LinkedList<string>> data =
new Dictionary<string, LinkedList<string>>();
public void tambah(string kata, string[] sinonim){
if (!data.ContainsKey(kata))
data[kata] = new LinkedList<string>();
foreach (string s in sinonim){
data[kata].AddLast(s);
if (!data.ContainsKey(s))
data[s] = new LinkedList<string>();
data[s].AddLast(kata);
}
}
public string[] ambilSinonim(string kata){
if (data.ContainsKey(kata))
return new List<string>(data[kata]).ToArray();
return null;
}
}
class Program
{
static void Main()
{
Kamus kamus = new Kamus();
kamus.tambah("big", new string[] { "large", "great" });
kamus.tambah("big", new string[] { "huge", "fat" });
kamus.tambah("huge", new string[] { "enormous", "gigantic" });
Console.WriteLine(string.Join(", ", kamus.ambilSinonim("big")));
Console.WriteLine(string.Join(", ", kamus.ambilSinonim("huge")));
Console.WriteLine(string.Join(", ", kamus.ambilSinonim("gigantic")));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKCmNsYXNzIEthbXVzewogICAgcHJpdmF0ZSBEaWN0aW9uYXJ5PHN0cmluZywgTGlua2VkTGlzdDxzdHJpbmc+PiBkYXRhID0KICAgICAgICBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIExpbmtlZExpc3Q8c3RyaW5nPj4oKTsKCiAgICBwdWJsaWMgdm9pZCB0YW1iYWgoc3RyaW5nIGthdGEsIHN0cmluZ1tdIHNpbm9uaW0pewogICAgICAgIGlmICghZGF0YS5Db250YWluc0tleShrYXRhKSkKICAgICAgICAgICAgZGF0YVtrYXRhXSA9IG5ldyBMaW5rZWRMaXN0PHN0cmluZz4oKTsKCiAgICAgICAgZm9yZWFjaCAoc3RyaW5nIHMgaW4gc2lub25pbSl7CiAgICAgICAgICAgIGRhdGFba2F0YV0uQWRkTGFzdChzKTsKCiAgICAgICAgICAgIGlmICghZGF0YS5Db250YWluc0tleShzKSkKICAgICAgICAgICAgICAgIGRhdGFbc10gPSBuZXcgTGlua2VkTGlzdDxzdHJpbmc+KCk7CgogICAgICAgICAgICBkYXRhW3NdLkFkZExhc3Qoa2F0YSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdHJpbmdbXSBhbWJpbFNpbm9uaW0oc3RyaW5nIGthdGEpewogICAgICAgIGlmIChkYXRhLkNvbnRhaW5zS2V5KGthdGEpKQogICAgICAgICAgICByZXR1cm4gbmV3IExpc3Q8c3RyaW5nPihkYXRhW2thdGFdKS5Ub0FycmF5KCk7CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQp9CgpjbGFzcyBQcm9ncmFtCnsKICAgIHN0YXRpYyB2b2lkIE1haW4oKQogICAgewogICAgICAgIEthbXVzIGthbXVzID0gbmV3IEthbXVzKCk7CgogICAgICAgIGthbXVzLnRhbWJhaCgiYmlnIiwgbmV3IHN0cmluZ1tdIHsgImxhcmdlIiwgImdyZWF0IiB9KTsKICAgICAgICBrYW11cy50YW1iYWgoImJpZyIsIG5ldyBzdHJpbmdbXSB7ICJodWdlIiwgImZhdCIgfSk7CiAgICAgICAga2FtdXMudGFtYmFoKCJodWdlIiwgbmV3IHN0cmluZ1tdIHsgImVub3Jtb3VzIiwgImdpZ2FudGljIiB9KTsKCiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoc3RyaW5nLkpvaW4oIiwgIiwga2FtdXMuYW1iaWxTaW5vbmltKCJiaWciKSkpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHN0cmluZy5Kb2luKCIsICIsIGthbXVzLmFtYmlsU2lub25pbSgiaHVnZSIpKSk7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoc3RyaW5nLkpvaW4oIiwgIiwga2FtdXMuYW1iaWxTaW5vbmltKCJnaWdhbnRpYyIpKSk7CiAgICB9Cn0K