답안 #311263

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
311263 2020-10-09T19:43:28 Z Vladth11 Political Development (BOI17_politicaldevelopment) C++14
0 / 100
10 ms 5880 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);
    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;
        for(auto y : v[i]) {
            if(mask & (1 << j)) {
              //  debug(y);
              int cc = 0;
                for(auto x : v[i]) {
                   // debug(x);
                    if(cc != j && (mask & (1 << cc)) && v[y].find(x) == v[y].end()){
                        cnt = 0;
                        break;
                    }
                    cc++;
                }
            }
            if(cnt == 0)
                break;
            j++;
        }
 
         //  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:32:19: warning: unused variable 'cc' [-Wunused-variable]
   32 |         int j = 0,cc = 0;
      |                   ^~
politicaldevelopment.cpp: In function 'int main()':
politicaldevelopment.cpp:86:15: warning: unused variable 'd' [-Wunused-variable]
   86 |     int n, i, d;
      |               ^
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 4992 KB Output is correct
2 Correct 3 ms 4992 KB Output is correct
3 Correct 10 ms 5880 KB Output is correct
4 Correct 10 ms 5760 KB Output is correct
5 Correct 10 ms 5760 KB Output is correct
6 Correct 10 ms 5760 KB Output is correct
7 Correct 10 ms 5792 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 3 ms 4992 KB Output is correct
3 Correct 10 ms 5880 KB Output is correct
4 Correct 10 ms 5760 KB Output is correct
5 Correct 10 ms 5760 KB Output is correct
6 Correct 10 ms 5760 KB Output is correct
7 Correct 10 ms 5792 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 3 ms 4992 KB Output is correct
3 Correct 10 ms 5880 KB Output is correct
4 Correct 10 ms 5760 KB Output is correct
5 Correct 10 ms 5760 KB Output is correct
6 Correct 10 ms 5760 KB Output is correct
7 Correct 10 ms 5792 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 3 ms 4992 KB Output is correct
3 Correct 10 ms 5880 KB Output is correct
4 Correct 10 ms 5760 KB Output is correct
5 Correct 10 ms 5760 KB Output is correct
6 Correct 10 ms 5760 KB Output is correct
7 Correct 10 ms 5792 KB Output is correct
8 Incorrect 5 ms 5376 KB Output isn't correct
9 Halted 0 ms 0 KB -