답안 #371609

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
371609 2021-02-27T03:32:32 Z RyoPham 항공 노선도 (JOI18_airline) C++14
37 / 100
817 ms 35236 KB
#include <bits/stdc++.h>
#include "Alicelib.h"

using namespace std;

#define sz(x) (int)x.size()
#define fi first
#define se second

typedef long long lli;
typedef pair<int, int> pii;

void Alice(int N, int M, int A[], int B[])
{
    const int logn = 10;

    if(N < 3)
    {
        InitG(N, M);
        if(M == 1)
            MakeG(0, 0, 1);
        return;
    }

    vector<pii> edges;
    for(int i = 0; i < M; ++i)
    {
        ++A[i]; ++B[i];
        edges.push_back(pii(A[i], B[i]));
    }
    for(int i = 1; i <= N; ++i)
    {
        edges.push_back(pii(i, N + logn + 1));
        for(int j = 0; j < logn; ++j)
            if(i >> j & 1) edges.push_back(pii(i, N + j + 1));
    }
    for(int j = 1; j < logn; ++j)
        edges.push_back(pii(N + j, N + j + 1));
    edges.push_back(pii(N + logn + 1, N + logn + 2));
    InitG(N + logn + 2, sz(edges));
    for(int i = 0; i < sz(edges); ++i)
        MakeG(i, edges[i].fi - 1, edges[i].se - 1);
}
#include <bits/stdc++.h>
#include "Boblib.h"

using namespace std;

#define sz(x) (int)x.size()
#define fi first
#define se second

typedef long long lli;
typedef pair<int, int> pii;

const int maxn = 1505;

vector<int> gr[maxn];
bool origin[maxn], ok[maxn];

int mask[maxn];

void Bob(int V, int U, int C[], int D[])
{
    const int logn = 10;

    if(V < 3)
    {
        InitMap(V, U);
        if(U == 1)
            MakeMap(0, 1);
        return;
    }

    int N = V - logn - 2;

    vector<int> one_deg_vertices;
    for(int i = 0; i < U; ++i)
    {
        ++C[i]; ++D[i];
        gr[C[i]].push_back(D[i]);
        gr[D[i]].push_back(C[i]);
    }
    for(int i = 1; i <= V; ++i)
        if(sz(gr[i]) == 1) one_deg_vertices.push_back(i);
    assert(sz(one_deg_vertices) <= 2);
    int id_bit_10th = -1, min_deg = maxn;
    if(sz(one_deg_vertices) == 1)
    {
        int u = one_deg_vertices.back();
        u = gr[u].back();
        for(auto&v: gr[u])
            origin[v] = true;
        origin[u] = origin[one_deg_vertices.back()] = false;
        for(int i = 1; i <= V; ++i)
            if(!origin[i] && i != u && min_deg > sz(gr[i]))
            {
                min_deg = sz(gr[i]);
                id_bit_10th = i;
            }
    }
    else
    {
        int u = one_deg_vertices.back();
        u = gr[u].back();
        if(sz(gr[u]) != N + 1)
            swap(one_deg_vertices[0], one_deg_vertices[1]);
        id_bit_10th = one_deg_vertices[0];
        u = one_deg_vertices[1]; u = gr[u].back();
        for(auto&v: gr[u])
            origin[v] = true;
        origin[u] = origin[one_deg_vertices[1]] = false;
    }

    for(int i = logn - 1, j = id_bit_10th; i >= 0; --i)
    {
        int nj = -1;
        for(auto&k: gr[j])
        {
            if(origin[k]) mask[k] ^= (1 << i);
            else if(!ok[k])
            {
                assert(nj == -1);
                nj = k;
            }
        }
        ok[j] = true;
        j = nj;
        if(i > 0) assert(j != -1);
    }

    vector<pii> edges;
    for(int i = 0; i < U; ++i)
        if(origin[C[i]] && origin[D[i]])
            edges.push_back(pii(mask[C[i]] - 1, mask[D[i]] - 1));
    int M = sz(edges);

    InitMap(N, M);
    for(auto&e: edges)
        MakeMap(e.fi, e.se);
}
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 4832 KB Output is correct
2 Correct 6 ms 4832 KB Output is correct
3 Correct 5 ms 4832 KB Output is correct
4 Correct 5 ms 4832 KB Output is correct
5 Correct 5 ms 4936 KB Output is correct
6 Correct 6 ms 4960 KB Output is correct
7 Correct 7 ms 4832 KB Output is correct
8 Correct 7 ms 4832 KB Output is correct
9 Correct 6 ms 4832 KB Output is correct
10 Correct 6 ms 4832 KB Output is correct
11 Correct 5 ms 4928 KB Output is correct
12 Correct 6 ms 4992 KB Output is correct
13 Correct 8 ms 4844 KB Output is correct
14 Correct 6 ms 4832 KB Output is correct
15 Correct 6 ms 4864 KB Output is correct
16 Correct 5 ms 4928 KB Output is correct
17 Correct 6 ms 4896 KB Output is correct
18 Correct 5 ms 4832 KB Output is correct
19 Correct 5 ms 4832 KB Output is correct
20 Correct 6 ms 4832 KB Output is correct
21 Correct 7 ms 4844 KB Output is correct
22 Correct 5 ms 4932 KB Output is correct
23 Correct 6 ms 4832 KB Output is correct
24 Correct 6 ms 4936 KB Output is correct
25 Correct 7 ms 4832 KB Output is correct
26 Correct 6 ms 4832 KB Output is correct
27 Correct 7 ms 5052 KB Output is correct
28 Correct 6 ms 4960 KB Output is correct
29 Correct 6 ms 4948 KB Output is correct
30 Correct 6 ms 4936 KB Output is correct
31 Correct 6 ms 5132 KB Output is correct
32 Correct 6 ms 4832 KB Output is correct
33 Correct 5 ms 4832 KB Output is correct
34 Correct 5 ms 4832 KB Output is correct
35 Correct 7 ms 4832 KB Output is correct
36 Correct 5 ms 4920 KB Output is correct
37 Correct 5 ms 4920 KB Output is correct
38 Correct 5 ms 4832 KB Output is correct
39 Correct 5 ms 4920 KB Output is correct
40 Correct 5 ms 4832 KB Output is correct
41 Correct 7 ms 4832 KB Output is correct
42 Correct 5 ms 4832 KB Output is correct
43 Correct 6 ms 4832 KB Output is correct
44 Correct 5 ms 5064 KB Output is correct
45 Correct 5 ms 4832 KB Output is correct
46 Correct 6 ms 4832 KB Output is correct
47 Correct 6 ms 4832 KB Output is correct
48 Correct 8 ms 4960 KB Output is correct
49 Correct 7 ms 4832 KB Output is correct
50 Correct 7 ms 4944 KB Output is correct
51 Correct 5 ms 4832 KB Output is correct
52 Correct 5 ms 4940 KB Output is correct
53 Correct 5 ms 4832 KB Output is correct
54 Correct 6 ms 4972 KB Output is correct
55 Correct 7 ms 4928 KB Output is correct
56 Correct 6 ms 4832 KB Output is correct
57 Correct 5 ms 4832 KB Output is correct
58 Correct 5 ms 4832 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 4832 KB Output is correct
2 Correct 6 ms 4832 KB Output is correct
3 Correct 5 ms 4832 KB Output is correct
4 Correct 5 ms 4832 KB Output is correct
5 Correct 5 ms 4936 KB Output is correct
6 Correct 6 ms 4960 KB Output is correct
7 Correct 7 ms 4832 KB Output is correct
8 Correct 7 ms 4832 KB Output is correct
9 Correct 6 ms 4832 KB Output is correct
10 Correct 6 ms 4832 KB Output is correct
11 Correct 5 ms 4928 KB Output is correct
12 Correct 6 ms 4992 KB Output is correct
13 Correct 8 ms 4844 KB Output is correct
14 Correct 6 ms 4832 KB Output is correct
15 Correct 6 ms 4864 KB Output is correct
16 Correct 5 ms 4928 KB Output is correct
17 Correct 6 ms 4896 KB Output is correct
18 Correct 5 ms 4832 KB Output is correct
19 Correct 5 ms 4832 KB Output is correct
20 Correct 6 ms 4832 KB Output is correct
21 Correct 7 ms 4844 KB Output is correct
22 Correct 5 ms 4932 KB Output is correct
23 Correct 6 ms 4832 KB Output is correct
24 Correct 6 ms 4936 KB Output is correct
25 Correct 7 ms 4832 KB Output is correct
26 Correct 6 ms 4832 KB Output is correct
27 Correct 7 ms 5052 KB Output is correct
28 Correct 6 ms 4960 KB Output is correct
29 Correct 6 ms 4948 KB Output is correct
30 Correct 6 ms 4936 KB Output is correct
31 Correct 6 ms 5132 KB Output is correct
32 Correct 6 ms 4832 KB Output is correct
33 Correct 5 ms 4832 KB Output is correct
34 Correct 5 ms 4832 KB Output is correct
35 Correct 7 ms 4832 KB Output is correct
36 Correct 5 ms 4920 KB Output is correct
37 Correct 5 ms 4920 KB Output is correct
38 Correct 5 ms 4832 KB Output is correct
39 Correct 5 ms 4920 KB Output is correct
40 Correct 5 ms 4832 KB Output is correct
41 Correct 7 ms 4832 KB Output is correct
42 Correct 5 ms 4832 KB Output is correct
43 Correct 6 ms 4832 KB Output is correct
44 Correct 5 ms 5064 KB Output is correct
45 Correct 5 ms 4832 KB Output is correct
46 Correct 6 ms 4832 KB Output is correct
47 Correct 6 ms 4832 KB Output is correct
48 Correct 8 ms 4960 KB Output is correct
49 Correct 7 ms 4832 KB Output is correct
50 Correct 7 ms 4944 KB Output is correct
51 Correct 5 ms 4832 KB Output is correct
52 Correct 5 ms 4940 KB Output is correct
53 Correct 5 ms 4832 KB Output is correct
54 Correct 6 ms 4972 KB Output is correct
55 Correct 7 ms 4928 KB Output is correct
56 Correct 6 ms 4832 KB Output is correct
57 Correct 5 ms 4832 KB Output is correct
58 Correct 5 ms 4832 KB Output is correct
59 Correct 7 ms 4960 KB Output is correct
60 Correct 7 ms 4960 KB Output is correct
61 Correct 6 ms 5048 KB Output is correct
62 Correct 6 ms 4832 KB Output is correct
63 Correct 5 ms 4832 KB Output is correct
64 Correct 7 ms 4960 KB Output is correct
65 Correct 7 ms 4832 KB Output is correct
66 Correct 8 ms 4832 KB Output is correct
67 Correct 7 ms 4960 KB Output is correct
68 Correct 5 ms 4896 KB Output is correct
69 Correct 7 ms 4960 KB Output is correct
70 Correct 6 ms 4960 KB Output is correct
71 Correct 8 ms 5116 KB Output is correct
72 Correct 8 ms 4832 KB Output is correct
73 Correct 7 ms 4960 KB Output is correct
74 Correct 5 ms 4832 KB Output is correct
75 Correct 6 ms 4988 KB Output is correct
76 Correct 6 ms 4960 KB Output is correct
77 Correct 6 ms 4832 KB Output is correct
78 Correct 7 ms 4960 KB Output is correct
79 Correct 6 ms 4960 KB Output is correct
80 Correct 6 ms 4876 KB Output is correct
81 Correct 7 ms 4832 KB Output is correct
82 Correct 6 ms 4924 KB Output is correct
83 Correct 7 ms 5048 KB Output is correct
84 Correct 6 ms 4960 KB Output is correct
85 Correct 7 ms 4960 KB Output is correct
86 Correct 6 ms 5048 KB Output is correct
87 Correct 6 ms 4960 KB Output is correct
88 Correct 6 ms 4900 KB Output is correct
89 Correct 8 ms 4944 KB Output is correct
90 Correct 6 ms 4940 KB Output is correct
91 Correct 6 ms 4932 KB Output is correct
92 Correct 6 ms 4832 KB Output is correct
93 Correct 5 ms 4832 KB Output is correct
94 Correct 7 ms 4960 KB Output is correct
95 Correct 7 ms 4960 KB Output is correct
96 Correct 6 ms 4960 KB Output is correct
97 Correct 7 ms 4960 KB Output is correct
98 Correct 6 ms 4924 KB Output is correct
99 Correct 7 ms 5108 KB Output is correct
100 Correct 8 ms 5044 KB Output is correct
101 Correct 7 ms 4832 KB Output is correct
102 Correct 6 ms 4832 KB Output is correct
103 Correct 5 ms 4832 KB Output is correct
104 Correct 6 ms 5048 KB Output is correct
105 Correct 6 ms 4980 KB Output is correct
106 Correct 6 ms 4960 KB Output is correct
107 Correct 6 ms 4832 KB Output is correct
108 Correct 6 ms 4832 KB Output is correct
109 Correct 8 ms 5392 KB Output is correct
110 Correct 6 ms 4832 KB Output is correct
111 Correct 7 ms 4960 KB Output is correct
112 Correct 7 ms 4960 KB Output is correct
113 Correct 5 ms 4920 KB Output is correct
114 Correct 5 ms 4832 KB Output is correct
115 Correct 5 ms 5036 KB Output is correct
116 Correct 6 ms 5152 KB Output is correct
117 Correct 7 ms 4988 KB Output is correct
118 Correct 5 ms 4832 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 817 ms 35236 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -