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")));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKIApjbGFzcyBLYW11c3sKICAgIHByaXZhdGUgRGljdGlvbmFyeTxzdHJpbmcsIExpbmtlZExpc3Q8c3RyaW5nPj4gZGF0YSA9CiAgICAgICAgbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBMaW5rZWRMaXN0PHN0cmluZz4+KCk7CiAKICAgIHB1YmxpYyB2b2lkIHRhbWJhaChzdHJpbmcga2F0YSwgc3RyaW5nW10gc2lub25pbSl7CiAgICAgICAgaWYgKCFkYXRhLkNvbnRhaW5zS2V5KGthdGEpKQogICAgICAgICAgICBkYXRhW2thdGFdID0gbmV3IExpbmtlZExpc3Q8c3RyaW5nPigpOwogCiAgICAgICAgZm9yZWFjaCAoc3RyaW5nIHMgaW4gc2lub25pbSl7CiAgICAgICAgICAgIGRhdGFba2F0YV0uQWRkTGFzdChzKTsKIAogICAgICAgICAgICBpZiAoIWRhdGEuQ29udGFpbnNLZXkocykpCiAgICAgICAgICAgICAgICBkYXRhW3NdID0gbmV3IExpbmtlZExpc3Q8c3RyaW5nPigpOwogCiAgICAgICAgICAgIGRhdGFbc10uQWRkTGFzdChrYXRhKTsKICAgICAgICB9CiAgICB9CiAKICAgIHB1YmxpYyBzdHJpbmdbXSBhbWJpbFNpbm9uaW0oc3RyaW5nIGthdGEpewogICAgICAgIGlmIChkYXRhLkNvbnRhaW5zS2V5KGthdGEpKQogICAgICAgICAgICByZXR1cm4gbmV3IExpc3Q8c3RyaW5nPihkYXRhW2thdGFdKS5Ub0FycmF5KCk7CiAKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQogCmNsYXNzIFByb2dyYW0KewogICAgc3RhdGljIHZvaWQgTWFpbigpCiAgICB7CiAgICAgICAgS2FtdXMga2FtdXMgPSBuZXcgS2FtdXMoKTsKIAogICAgICAgIGthbXVzLnRhbWJhaCgiYmlnIiwgbmV3IHN0cmluZ1tdIHsgImxhcmdlIiwgImdyZWF0IiB9KTsKICAgICAgICBrYW11cy50YW1iYWgoImJpZyIsIG5ldyBzdHJpbmdbXSB7ICJodWdlIiwgImZhdCIgfSk7CiAgICAgICAga2FtdXMudGFtYmFoKCJodWdlIiwgbmV3IHN0cmluZ1tdIHsgImVub3Jtb3VzIiwgImdpZ2FudGljIiB9KTsKIAogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHN0cmluZy5Kb2luKCIsICIsIGthbXVzLmFtYmlsU2lub25pbSgiYmlnIikpKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZShzdHJpbmcuSm9pbigiLCAiLCBrYW11cy5hbWJpbFNpbm9uaW0oImh1Z2UiKSkpOwogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHN0cmluZy5Kb2luKCIsICIsIGthbXVzLmFtYmlsU2lub25pbSgiZ2lnYW50aWMiKSkpOwogICAgfQp9