제출 #841302

#제출 시각아이디문제언어결과실행 시간메모리
841302serifefedartarPolitical Development (BOI17_politicaldevelopment)C++17
100 / 100
1154 ms26040 KiB
#include <bits/stdc++.h> using namespace std; #define fast ios::sync_with_stdio(0);cin.tie(0); typedef long long ll; #define f first #define s second #define MOD 1000000007 #define LOGN 20 #define MAXN 50005 vector<set<int>> graph; int deg[MAXN], active[MAXN]; int main() { fast int N, K, x, D; cin >> N >> K; graph = vector<set<int>>(N, set<int>()); queue<int> q; for (int i = 0; i < N; i++) active[i] = true; for (int i = 0; i < N; i++) { cin >> deg[i]; for (int j = 0; j < deg[i]; j++) { cin >> x; graph[i].insert(x); } if (deg[i] < K) q.push(i); } int ans = 1; while (!q.empty()) { int node = q.front(); q.pop(); if (!active[node]) continue; vector<int> adj; for (auto u : graph[node]) { if (active[u]) adj.push_back(u); } int degree = adj.size(); int mx_mask = (1<<degree) - 1; for (int msk = 1; msk <= mx_mask; msk++) { int k = __builtin_popcount(msk); if (k + 1 <= ans) continue; vector<int> taken; taken.push_back(node); bool check = true; for (int j = 0; j < degree; j++) { if ((1<<j) & msk) { for (auto u : taken) { if (graph[adj[j]].count(u) == 0) check = false; } taken.push_back(adj[j]); } } if (check) ans = max(ans, k + 1); } for (auto u : graph[node]) { deg[u]--; if (deg[u] < K) q.push(u); } active[node] = false; } cout << ans << "\n"; }

컴파일 시 표준 에러 (stderr) 메시지

politicaldevelopment.cpp: In function 'int main()':
politicaldevelopment.cpp:16:15: warning: unused variable 'D' [-Wunused-variable]
   16 |  int N, K, x, D;
      |               ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...