Advertisement
What_Ever

Untitled

Feb 18th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.61 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <algorithm>
  5. using namespace std;
  6. vector<string> friends,result;
  7. vector< pair<string,string> > pairs;
  8. bool visited[16];
  9. int n,m;
  10. void clearVisited()
  11. {
  12.     for(int i = 0 ; i < n ; i++)
  13.         visited[i] = false;
  14. }
  15. bool check()
  16. {
  17.     for(int i = 0 ; i < m ; i++)
  18.     {
  19.         bool cond1 = find(result.begin(),result.end(),pairs[i].first) != result.end();
  20.         bool cond2 = find(result.begin(),result.end(),pairs[i].second) != result.end();
  21.         if(cond1 && cond2)
  22.             return false;
  23.     }
  24.     return true;
  25. }
  26. void solve(int k,int len)
  27. {
  28.     if(k == len+1)
  29.     {
  30.         if(check())
  31.         {
  32.             cout << len << endl;
  33.             for(int j = 0 ; j < len ;j++)
  34.                 cout << result[j] << endl;
  35.             exit(0);
  36.         }
  37.         return;
  38.     }
  39.     for(int i = k ; i <= n ; i++)
  40.     {
  41.         if(!visited[i-1])
  42.         {
  43.             result.push_back(friends[i-1]);
  44.             visited[i-1] = true;
  45.             solve(k+1,len);
  46.             result.pop_back();
  47.             for(int j = i ; j < n ; j++)
  48.                 visited[j] = false;
  49.         }
  50.     }
  51. }
  52. int main()
  53. {
  54.     string temp1,temp2;
  55.     cin >> n >> m;
  56.     for(int i = 0 ; i < n ; i++)
  57.     {
  58.         cin >> temp1;
  59.         friends.push_back(temp1);
  60.     }
  61.     sort(friends.begin(),friends.end());
  62.     for(int i = 0 ; i < m ; i++)
  63.     {
  64.         cin >> temp1 >> temp2;
  65.         pairs.push_back({temp1,temp2});
  66.     }
  67.     for(int counter = n; counter > 0 ; counter--)
  68.     {
  69.         solve(1,counter);
  70.         clearVisited();
  71.     }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement