Submission #1213305

#TimeUsernameProblemLanguageResultExecution timeMemory
1213305og_matveychick1Airline Route Map (JOI18_airline)C++20
0 / 100
353 ms27204 KiB
#include "Alicelib.h"
#include <cassert>
#include <cstdio>
#include "bits/stdc++.h"

using namespace std;

static const int N = 1500, L = 1, R = 10, M = 1;

static int n, m;
static vector<pair<int, int>> e;


void Alice(int _n, int _m, int A[], int B[]) {
    n = _n, m = _m;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < R; j++) {
            if ((i >> j) & 1) e.push_back({i, n + 1 + L + j});
        }
    }
    for (int i = 0; i < m; i++) e.push_back({A[i], B[i]});
    for (int i = 0; i < n; i++) e.push_back({i, n});
    for (int i = n + 1; i < n + L + 1; i++) e.push_back({i, n});
    e.push_back({n, n + L + 1});
    for (int i = n + L + 1; i < n + L + 1 + R - 1; i++) e.push_back({i, i + 1});
    for (int i = n + 1; i < n + 1 + M; i++) {
        for (int j = n + L + 1; j < n + L + 1 + R; j++) {
            e.push_back({i, j});
        }
    }
    InitG(n + 1 + L + R, e.size());
    for (int i = 0; i < e.size(); i++) MakeG(i, e[i].first, e[i].second);
}

#include "Boblib.h"
#include <cassert>
#include <cstdio>
#include "bits/stdc++.h"

using namespace std;

static const int N = 1500, L = 1, R = 10, M = 1;

static int n, m, p[N], cnt[N], used[N];
static vector<pair<int, int>> e;
static vector<int> g[N];
static map<vector<int>, int> ma;

void Bob(int V, int U, int C[], int D[]) {
    n = V - 1 - L - R;
    for (int i = 0; i < U; i++) {
        int u = C[i], v = D[i];
        g[u].push_back(v);
        g[v].push_back(u);
        cnt[u]++;
        cnt[v]++;
    }

    vector<int> ch(R, 3);
    ch[R - 1]--;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < R; j++) {
            if ((i >> j) & 1) ch[j]++;
        }
    }
    sort(ch.begin(), ch.end());

    int s;
    vector<int> a;
    for (int i = 0; i < V; i++) {
        if (cnt[i] != n + 2) continue;
        for (auto j: g[i]) {
            if (cnt[j] != R + 1) continue;
            vector<int> c;
            for (auto x: g[j]) {
                if (x == i) continue;
                c.push_back(cnt[x]);
            }
            sort(c.begin(), c.end());
            if (c == ch) {
                s = i;
                for (auto x: g[j]) {
                    if (x == i) continue;
                    a.push_back(x);
                }
                goto link;
            }
        }
    }
    link:

    vector<int> pt;
    int v = s;
    for (int _ = 0; _ < R; _++) {
        for (auto x: g[v]) {
            if (find(a.begin(), a.end(), x) != a.end() && !used[x]) {
                used[v] = 1;
                v = x;
                pt.push_back(v);
                break;
            }
        }
    }
    for (int i = 0; i < V; i++) {
        int id = 0;
        for (auto x: g[i]) {
            if (find(pt.begin(), pt.end(), x) != pt.end()) {
                id += 1 << (find(pt.begin(), pt.end(), x) - pt.begin());
            }
        }
        if (id < n && find(pt.begin(), pt.end(), i) == pt.end() && i != s) p[i] = id;
        else p[i] = -1;
    }
    for (int i = 0; i < V; i++) {
        if (p[i] == -1) continue;
        for (auto x: g[i]) {
            if (p[x] == -1) continue;
            if (p[x] < p[i]) continue;
            e.push_back({p[i], p[x]});
        }
    }
    InitMap(n, e.size());
    for (auto [u, w]: e) MakeMap(u, w);
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...