artemgf

Число Исинбаева (долгий)

Aug 3rd, 2017
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.10 KB | None | 0 0
  1. #define _USE_MATH_DEFINES
  2. #include <iostream>
  3. #include <conio.h>
  4. #include <string>
  5. #include <set>
  6. #include <map>
  7. #include <algorithm>
  8. #include <string>
  9. #include <math.h>
  10. #include <vector>
  11. #include <cmath>
  12. #include <sstream>
  13.  
  14. using namespace std;
  15.  
  16. struct player
  17. {
  18.     bool was;
  19.     map <string, player*> teammades;
  20. };
  21.  
  22. player* NEW()
  23. {
  24.     player* New = new player;
  25.     New->was = false;
  26.  
  27.     return New;
  28. }
  29.  
  30. map <string, player*> friends;
  31.  
  32. void graf(vector <string> data)
  33. {
  34.     for (int i = 0; i <= 2; i++)
  35.         for (int j = 0; j <= 2; j++)
  36.             if (j != i)
  37.                 if (friends[data[i]]->teammades.find(data[j]) == friends[data[i]]->teammades.end())
  38.                     friends[data[i]]->teammades.insert(pair <string, player*>(data[j], friends[data[j]]));
  39. }
  40.  
  41. set <int> sc;
  42.  
  43. int find(player* friends, int n)
  44. {
  45.     if (friends->teammades.find("Isenbaev") == friends->teammades.end())
  46.     {
  47.         if (friends->was != true)
  48.         {
  49.             n++;
  50.             for (auto i = friends->teammades.begin(); i != friends->teammades.end(); i++)
  51.             {
  52.                 friends->was = true;
  53.                 if (i->second->was != true)
  54.                 {
  55.                     find(i->second, n);
  56.                 }
  57.             }
  58.             friends->was = false;
  59.         }
  60.     }
  61.     else
  62.         sc.insert(n);
  63.     return n;
  64. }
  65.  
  66. int main()
  67. {
  68.     player* team = new player;
  69.     vector <string> data;
  70.     string prom;
  71.     int n;
  72.  
  73.     cin >> n;
  74.  
  75.     for (int i = 1; i <= n; i++)
  76.     {
  77.         cin >> prom;
  78.         data.push_back(prom);
  79.         cin >> prom;
  80.         data.push_back(prom);
  81.         cin >> prom;
  82.         data.push_back(prom);
  83.         if (friends.find(data[0]) == friends.end())
  84.             friends.insert(pair <string, player*>(data[0], NEW()));
  85.         if (friends.find(data[1]) == friends.end())
  86.             friends.insert(pair <string, player*>(data[1], NEW()));
  87.         if (friends.find(data[2]) == friends.end())
  88.             friends.insert(pair <string, player*>(data[2], NEW()));
  89.         graf(data);
  90.         data.clear();
  91.     }
  92.  
  93.     for (auto i = friends.begin(); i != friends.end(); i++)
  94.     {
  95.         cout << i->first << " ";
  96.         find(i->second, 0);
  97.         if (i->first != "Isenbaev")
  98.             if (sc.size() != 0)
  99.                 cout << *sc.begin() + 1 << endl;
  100.             else
  101.                 cout << "undefined" << endl;
  102.         else
  103.             cout << 0 << endl;
  104.         sc.clear();
  105.     }
  106.  
  107.     _getch();
  108.     return 0;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment