제출 #1252238

#제출 시각아이디문제언어결과실행 시간메모리
1252238EJIC_B_KEDAX세계 지도 (IOI25_worldmap)C++20
15 / 100
88 ms11316 KiB
#include "worldmap.h"
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

vector<vector<int>> create_map(int n, int m, vector<int> a, vector<int> b) {
    vector<vector<int>> g(n);
    for (int i = 0; i < m; i++) {
        a[i]--; b[i]--;
        g[a[i]].push_back(b[i]);
        g[b[i]].push_back(a[i]);
    }
    int K = 5 * n;
    vector<vector<int>> ans(K, vector<int>(K, -1));
    vector<int> used(n, 0);
    int cur = 0;
    auto dfs = [&](auto dfs, int s) -> void {
        used[s] = 1;
        for (int i = 0; i < K; i++) {
            ans[cur][i] = s + 1;
        }
        for (int i = 0; i < K / 2; i++) {
            if (g[s].size() > i) {
                ans[cur + 1][2 * i] = g[s][i] + 1;
            } else {
                ans[cur + 1][2 * i] = s + 1;
            }
            ans[cur + 1][2 * i + 1] = s + 1;
        }
        if (K & 1) {
            ans[cur + 1][K - 1] = s + 1;
        }
        for (int i = 0; i < K; i++) {
            ans[cur + 2][i] = s + 1;
        }
        cur += 3;
        for (int i : g[s]) {
            if (!used[i]) {
                dfs(dfs, i);
            }
            for (int i = 0; i < K; i++) {
                ans[cur][i] = s + 1;
            }
            cur++;
        }
    };
    dfs(dfs, 0);
    for (; cur < K; cur++) {
        ans[cur] = ans[cur - 1];
    }
    return ans;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...