Submission #727241

#TimeUsernameProblemLanguageResultExecution timeMemory
727241gagik_2007Political Development (BOI17_politicaldevelopment)C++17
100 / 100
664 ms60492 KiB
#include <iostream> #include <algorithm> #include <string> #include <vector> #include <cmath> #include <chrono> #include <ctime> #include <set> #include <map> #include <stack> #include <queue> #include <deque> #include <limits> #include <iomanip> #include <unordered_set> #include <unordered_map> #include <fstream> #include <functional> #include <random> #include <cassert> using namespace std; typedef long long ll; typedef long double ld; #define ff first #define ss second ll ttt; const ll INF = 1e18; const ll MOD = 1e9 + 7; const ll N = 500007; ll n, m, k; vector<int>g[N]; int deg[N]; bool used[N]; unordered_map<ll, bool>d; int vs[N]; ll value(int v, int u) { return v * N + u; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> k; for (int i = 0; i < n; i++) { cin >> m; deg[i] = m; for (int j = 0; j < m; j++) { int x; cin >> x; g[i].push_back(x); d[value(i, x)] = true; } } priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>>q; for (int v = 0; v < n; v++) { q.push({ deg[v],v }); } ll ans = 0; while (!q.empty()) { int v = q.top().ss; q.pop(); //cout << v << ": " << deg[v] << endl; if (!used[v]) { int ind = 0; for (int i = 0; i < g[v].size(); i++) { if (!used[g[v][i]]) { vs[ind] = g[v][i]; ind++; } } for (int msk = 0; msk < (1 << deg[v]); msk++) { ll cnt = 1; bool ok = true; for (int i = 0; i < deg[v]; i++) { if (msk & (1 << i)) { cnt++; } for (int j = i + 1; j < deg[v]; j++) { if (msk & (1 << j)) { if (!d[value(vs[i], vs[j])]) { ok = false; break; } } } } if (ok) { ans = max(ans, cnt); } } used[v] = true; for (int u : g[v]) { deg[u]--; q.push({ deg[u],u }); } } } cout << ans << endl; }

Compilation message (stderr)

politicaldevelopment.cpp: In function 'int main()':
politicaldevelopment.cpp:70:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   70 |    for (int i = 0; i < g[v].size(); i++) {
      |                    ~~^~~~~~~~~~~~~
#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...