제출 #1256603

#제출 시각아이디문제언어결과실행 시간메모리
1256603pandaa73World Map (IOI25_worldmap)C++20
29 / 100
20 ms2888 KiB
#include <bits/stdc++.h>
using namespace std;

#define lf "\n"
#define ff endl
#define _ << ' ' <<
#define all(x) begin(x),end(x)
#define rall(x) rbegin(x),rend(x)

#define infos(str) do { fprintf(stderr, str"\n"); } while(0)
#define infor(str, ...) do { fprintf(stderr, str, __VA_ARGS__); } while(0)
#define infof(str, ...) do { fprintf(stderr, str"\n", __VA_ARGS__); } while(0)

#ifndef DEBUG

#undef infos
#undef infor
#undef infof

#define infos(str)
#define infor(str, ...)
#define infof(str, ...)

#endif

using ll = long long;

constexpr int LOG = 20;
constexpr int MOD = 1e9+7;
constexpr int MAXN = 1e5+7;

std::vector<std::vector<int>> create_map(int N, int M,
        std::vector<int> A, std::vector<int> B) {
    if(N == 1) return {{1}};

    vector<vector<int>> adj(N + 1);
    for(int i = 0; i < M; ++i) {
        adj[A[i]].push_back(B[i]);
        adj[B[i]].push_back(A[i]);
    }

    vector<bool> vis(N + 1);

    vector<int> tour = {1};
    auto dfs = [&](int v, int f, auto &&dfs) -> void {
        vis[v] = 1;

        for(auto u: adj[v]) {
            if(u == f) continue;

            tour.push_back(u);
            if(!vis[u]) dfs(u, v, dfs);

            tour.push_back(v);
        }
    };

    dfs(1, 0, dfs);

    int K = tour.size() / 2 + 1;

    vector<vector<int>> ans(K);
    for(int i = 0; i < K && i + K <= tour.size(); ++i)
        ans[i] = vector<int>(tour.begin() + i, tour.begin() + i + K);


    ans[K - 1] = ans[K - 2];

    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...