Submission #1138750

#TimeUsernameProblemLanguageResultExecution timeMemory
1138750CDuongAirline Route Map (JOI18_airline)C++20
0 / 100
163 ms19308 KiB
#include "Alicelib.h" #include <bits/stdc++.h> #define taskname "" #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define i64 long long #define isz(x) (int)x.size() using namespace std; void Alice(int N, int M, int A[], int B[]) { vector<array<int, 2>> edge; for (int i = 0; i < M; ++i) { edge.push_back({A[i], B[i]}); } for (int u = 0; u < N; ++u) for (int i = 0; i < 10; ++i) if (u >> i & 1) { edge.push_back({N + i, u}); } for (int i = N; i < N + 10; ++i) for (int j = i + 1; j < N + 10; ++j) { edge.push_back({j, i}); } for (int i = 0; i < N + 10; ++i) { edge.push_back({N + 10, i}); } for (int i = N; i < N + 10; ++i) { edge.push_back({N + 11, i}); } InitG(N + 12, isz(edge)); for (int i = 0; i < isz(edge); ++i) { MakeG(i, edge[i][0], edge[i][1]); } }
#include "Boblib.h" #include <bits/stdc++.h> #define taskname "" #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define i64 long long #define isz(x) (int)x.size() using namespace std; void Bob(int N, int M, int A[], int B[]) { vector<vector<int>> g(N); vector a(N, vector(N, false)); for (int i = 0; i < M; ++i) { int u = A[i], v = B[i]; g[u].emplace_back(v); g[v].emplace_back(u); a[u][v] = true; } pair<int, int> mx(-1, -1); for (int i = 0; i < N; ++i) { mx = max(mx, {isz(g[i]), i}); } int N10 = mx.second; assert(mx.first == N - 2); int N11 = -1, cntN10 = 0; for (int i = 0; i < N; ++i) if (i != N10) { if (not a[N10][i]) { N11 = i; } else { ++cntN10; } } assert(cntN10 == mx.first); assert(N11 != -1); vector<int> cand = g[N11]; assert(isz(cand) == 10); vector<int> cand_bit(10); for (int i = 0; i < 10; ++i) for (int j = 0; j < 10; ++j) { cand_bit[i] += a[cand[i]][cand[j]]; } vector<int> vis(N); vis[N10] = vis[N11] = true; for (auto u : cand) vis[u] = true; vector<int> real(N); for (int i = 0; i < isz(cand); ++i) { int u = cand[i], bit = cand_bit[i]; for (auto v : g[u]) if (not vis[v]) { real[v] |= 1 << bit; } } vector<array<int, 2>> res; for (int i = 0; i < M; ++i) { int u = A[i], v = B[i]; if (not vis[u] and not vis[v]) { res.push_back({real[u], real[v]}); } } InitMap(N - 12, isz(res)); for (auto [u, v] : res) MakeMap(u, v); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...