Submission #841302

#TimeUsernameProblemLanguageResultExecution timeMemory
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";
}

Compilation message (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...