Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- string bin(unsigned int n)
- {
- string result;
- do
- {
- char c = '0' + n % 2;
- result = c + result;
- n = n / 2;
- } while (n > 0);
- return result;
- }
- int main()
- {
- int n, m, ansN = -1;
- string ans;
- cin>>n>>m;
- vector<vector<int> > a(n, vector<int> (n, 0));
- for(int i = 0; i < m; ++i){
- int p1, p2;
- cin>>p1>>p2;
- a[p1-1][p2-1] = 1;
- a[p2-1][p1-1] = 1;
- }
- for(int i = 0; i < n; ++i){
- int d = n - i - 1;
- long long iter = 0;
- for(int j = 0; j < d; ++j)
- iter += pow(2,j);
- for(int j = iter;j >= 1; --j){
- string perm = bin(j);
- string add = "";
- for(int z = 0; z < d - perm.size(); z++)add+='0';
- for(int z = 0; z < n - d; z++)add+='0';
- perm = add + perm;
- bool flag = true, flag2 = true;
- for(int k = 0; k < perm.size(); ++k)
- if(perm[k] == '1' && !a[i][k]) flag = false;
- if(flag)
- for(int k = 0; k < perm.size(); ++k)
- if(perm[k] == '1' && flag2){
- for(int q = 0; q < n; ++q)
- if(k != q && perm[q] == '1' && a[q][k] != 1) {flag2 = false;}
- }
- if(flag2 && flag){
- int tmp = 0;
- for(int z = 0; z < perm.size(); z++) if(perm[z]=='1') tmp++;
- if(tmp > ansN) {ansN = tmp; perm[i] = '1'; ans = perm;}
- break;
- }
- }
- }
- for(int i = 0; i < ans.size(); i++)
- if(ans[i] == '1') cout<<i+1<<" ";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement