fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. class Kamus {
  5. private:
  6. map<string, vector<string> > data;
  7.  
  8. void hubungkan(const string& a, const string& b){
  9. vector<string>& daftar = data[a];
  10. if(find(daftar.begin(), daftar.end(), b) == daftar.end()){
  11. daftar.push_back(b);
  12. }
  13. }
  14.  
  15. public:
  16. void tambah(const string& kata, const vector<string>& sinonim){
  17. data[kata];
  18.  
  19. for(const string& s : sinonim){
  20. if(s == kata) continue;
  21. hubungkan(kata, s);
  22. hubungkan(s, kata);
  23. }
  24. }
  25.  
  26. const vector<string>* ambilSinonim(const string& kata) const {
  27. map<string, vector<string> >::const_iterator it = data.find(kata);
  28. if(it == data.end()) return nullptr;
  29. return &(it->second);
  30. }
  31. };
  32.  
  33. void tc(const vector<string>* hasil){
  34. if(hasil == nullptr){
  35. cout << "null\n";
  36. return;
  37. }
  38. cout << "[";
  39. for(size_t i = 0; i < hasil->size(); i++){
  40. if(i > 0) cout << ", ";
  41. cout << (*hasil)[i];
  42. }
  43. cout << "]\n";
  44. }
  45.  
  46. int main(){
  47. Kamus kamus;
  48. kamus.tambah("big", {"large", "great"});
  49. kamus.tambah("big", {"huge", "fat"});
  50. kamus.tambah("huge", {"enormous", "gigantic"});
  51.  
  52. tc(kamus.ambilSinonim("big"));
  53. tc(kamus.ambilSinonim("huge"));
  54. tc(kamus.ambilSinonim("gigantic"));
  55. tc(kamus.ambilSinonim("colossal"));
  56. return 0;
  57. }
Success #stdin #stdout 0s 5324KB
stdin
Standard input is empty
stdout
[large, great, huge, fat]
[big, enormous, gigantic]
[huge]
null