Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- #include <algorithm>
- using namespace std;
- vector<string> friends,result;
- vector< pair<string,string> > pairs;
- bool visited[16];
- int n,m;
- void clearVisited()
- {
- for(int i = 0 ; i < n ; i++)
- visited[i] = false;
- }
- bool check()
- {
- for(int i = 0 ; i < m ; i++)
- {
- bool cond1 = find(result.begin(),result.end(),pairs[i].first) != result.end();
- bool cond2 = find(result.begin(),result.end(),pairs[i].second) != result.end();
- if(cond1 && cond2)
- return false;
- }
- return true;
- }
- void solve(int k,int len)
- {
- if(k == len+1)
- {
- if(check())
- {
- cout << len << endl;
- for(int j = 0 ; j < len ;j++)
- cout << result[j] << endl;
- exit(0);
- }
- return;
- }
- for(int i = k ; i <= n ; i++)
- {
- if(!visited[i-1])
- {
- result.push_back(friends[i-1]);
- visited[i-1] = true;
- solve(k+1,len);
- result.pop_back();
- for(int j = i ; j < n ; j++)
- visited[j] = false;
- }
- }
- }
- int main()
- {
- string temp1,temp2;
- cin >> n >> m;
- for(int i = 0 ; i < n ; i++)
- {
- cin >> temp1;
- friends.push_back(temp1);
- }
- sort(friends.begin(),friends.end());
- for(int i = 0 ; i < m ; i++)
- {
- cin >> temp1 >> temp2;
- pairs.push_back({temp1,temp2});
- }
- for(int counter = n; counter > 0 ; counter--)
- {
- solve(1,counter);
- clearVisited();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement