답안 #311260

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
311260 2020-10-09T19:40:23 Z Vladth11 Political Development (BOI17_politicaldevelopment) C++14
0 / 100
10 ms 5888 KB
#include <bits/stdc++.h>
#define debug(x) cerr << #x << " " << x << "\n"
#define debug_with_space(x) cerr << #x << " " << x << " "

using namespace std;
typedef long long ll;
typedef pair <ll, ll> pii;
typedef pair <ll, pii> muchie;

const ll NMAX = 100005;
const ll INF = (1LL << 60);
const ll MOD = 1000000007;
const ll BLOCK = 101;

set <int> v[NMAX],st;
int maxim = 0,k;
int deg[NMAX];
set <pii> pq;
void afiseaza(int x){
    for(auto i : v[x])
        debug_with_space(i);
    cerr << "\n";
}

void clique(int i) {
    int nrbits = v[i].size();
    // debug(i);
     vector <int> nodes;
    for(auto x : v[i]){
        nodes.push_back(x);
    }
    for(int mask = 1; mask < (1 << nrbits); mask++) {
        int cnt = 1;int bb = __builtin_popcount(mask);
        if(bb + 1 > k || bb + 1 < maxim)
            continue;
        int j = 0,cc = 0;
        st.clear();
        for(auto y : v[i]){
            if(mask & (1 << j))
                st.insert(y);
            j++;
        }
        j = 0;
        vector <int> cur;
        for(j = 0;j < nrbits;j++) {
            if(mask & (1 << j)){
                cur.push_back(nodes[j]);
            }
        }
        for(auto x : cur){
            for(auto y : cur){
                if(x != y && v[x].find(y) == v[x].end()){
                    cnt = 0;
                    break;
                }
            }
            if(cnt == 0)
                break;
        }
         //  debug_with_space(mask);
         //debug(cnt);
        if(cnt == 1)
            maxim = max(maxim, bb + 1);
    }
    //debug(maxim);
    for(auto x : v[i]){
        //if(pq.size())
        if(x == i)
            continue;
        pq.erase({v[x].size(),x});
        v[x].erase(i);
        pq.insert({v[x].size(),x});
    }
    //debug(maxim);
}

struct cmp{
    bool operator()(int x, int y){
        return v[x].size() < v[y].size();
    }
};
int main() {
    // ifstream cin("catsfood.in");
    // ofstream cout("catsfood.out");
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n, i, d;
    cin >> n >> k;
    for(i = 1; i <= n; i++) {
        int d;
        cin >> d;
       // v[i].insert(i);
        while(d--) {
            int x;
            cin >> x;
            v[i].insert(x + 1);
            //v[x + 1].insert(i);
        }
    }

    for(i = 1; i <= n; i++) {
        pq.insert({v[i].size(),i});
    }
    while(!pq.empty()){
        int top = pq.begin()->second;
        pq.erase(pq.begin());
        clique(top);
    }
    cout << maxim;
    return 0;
}

Compilation message

politicaldevelopment.cpp: In function 'void clique(int)':
politicaldevelopment.cpp:36:19: warning: unused variable 'cc' [-Wunused-variable]
   36 |         int j = 0,cc = 0;
      |                   ^~
politicaldevelopment.cpp: In function 'int main()':
politicaldevelopment.cpp:88:15: warning: unused variable 'd' [-Wunused-variable]
   88 |     int n, i, d;
      |               ^
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 4992 KB Output is correct
2 Correct 4 ms 4992 KB Output is correct
3 Correct 10 ms 5760 KB Output is correct
4 Correct 10 ms 5760 KB Output is correct
5 Correct 10 ms 5888 KB Output is correct
6 Correct 9 ms 5760 KB Output is correct
7 Correct 10 ms 5760 KB Output is correct
8 Incorrect 5 ms 5376 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 4992 KB Output is correct
2 Correct 4 ms 4992 KB Output is correct
3 Correct 10 ms 5760 KB Output is correct
4 Correct 10 ms 5760 KB Output is correct
5 Correct 10 ms 5888 KB Output is correct
6 Correct 9 ms 5760 KB Output is correct
7 Correct 10 ms 5760 KB Output is correct
8 Incorrect 5 ms 5376 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 5376 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 4992 KB Output is correct
2 Correct 4 ms 4992 KB Output is correct
3 Correct 10 ms 5760 KB Output is correct
4 Correct 10 ms 5760 KB Output is correct
5 Correct 10 ms 5888 KB Output is correct
6 Correct 9 ms 5760 KB Output is correct
7 Correct 10 ms 5760 KB Output is correct
8 Incorrect 5 ms 5376 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 4992 KB Output is correct
2 Correct 4 ms 4992 KB Output is correct
3 Correct 10 ms 5760 KB Output is correct
4 Correct 10 ms 5760 KB Output is correct
5 Correct 10 ms 5888 KB Output is correct
6 Correct 9 ms 5760 KB Output is correct
7 Correct 10 ms 5760 KB Output is correct
8 Incorrect 5 ms 5376 KB Output isn't correct
9 Halted 0 ms 0 KB -