MyTetra Share
Делитесь знаниями!
Синонимы
Время создания: 01.08.2017 17:21
Раздел: Computer - Programming - C++ - Coursera White_Belt

/*

Два слова называются синонимами друг друга,

если они имеют похожие значения.

Реализуйте следующие операции над словарём синонимов:


ADD word1 word2 — добавить в словарь пару синонимов (word1, word2).

COUNT word — узнать количество синонимов слова word.

CHECK word1 word2 — проверить, являются ли

слова word1 и word2 синонимами.

Слова word1 и word2 считаются синонимами,

если среди запросов ADD был хотя бы один

запрос ADD word1 word2 или ADD word2 word1.


Формат ввода

Сначала вводится количество запросов Q,

затем Q строк с описаниями запросов.

Гарантируется, что в каждом запросе CHECK и ADD

слова word1 и word2 различны.

Все слова состоят лишь из латинских букв,

цифр и символов подчёркивания.


Формат вывода

Для каждого запроса в соответствующей строке выведите ответ на него:

В ответ на запрос COUNT word выведите единственное

целое число — количество синонимов слова word.

В ответ на запрос CHECK word1 word2 выведите строку YES,

если word1 и word2 являются синонимами, и NO в противном случае.

*/


#include <iostream>

#include <vector>

#include <set>

#include <map>


using namespace std;

/*

unsigned int CountSet(const set<vector<string>>& s, const string& w)

{

unsigned int counter = 0;

for(const auto& i : s)

{

if(i[0] == w || i[1] == w)

++counter;

}

return counter;

}

*/

int main()

{

unsigned int q;

set<vector<string>> synonyms;

map<string, unsigned int> counters;


cin >> q;

while(q)

{

string command;

string word;

cin >> command >> word;


if(command == "COUNT")

{

cout << counters[word] << "\n";

}

else

{

string word2;

cin >> word2;


vector<string> vec = {word, word2};

vector<string> vec2 = {word2, word};


if(command == "ADD")

{

if(!synonyms.count(vec2) && !synonyms.count(vec))

{

synonyms.insert(vec);

++counters[word];

++counters[word2];

}

}

else if(command == "CHECK")

{

if(synonyms.count(vec) || synonyms.count(vec2))

cout << "YES\n";

else cout << "NO\n";

}

}

--q;

}

// system("pause");

// getchar();

return 0;

}

Так же в этом разделе:
 
MyTetra Share v.0.53
Яндекс индекс цитирования