제출 #1256502

#제출 시각아이디문제언어결과실행 시간메모리
1256502jamesbamberWorld Map (IOI25_worldmap)C++20
72 / 100
74 ms9540 KiB
#include "worldmap.h"
using namespace std;

std::vector<std::vector<int>> create_map(int N, int M, std::vector<int> A, std::vector<int> B) {

    int K = 4*N;
    vector grid(K, vector<int>(K, 1));
    
    vector<int> order;
    vector<vector<int>> ad(N+1);

    for(int i=0; i<M; i++) {
        ad[A[i]].push_back(B[i]);
        ad[B[i]].push_back(A[i]);
    }

    vector<int> vis(N+1);

    auto dfs = [&](auto &&self, int v) -> void {
        vis[v] = 1;

        order.push_back(v);

        for(int u: ad[v]) {
            if(!vis[u]) {
                self(self, u);
                order.push_back(N + v);
            }
        }

    };

    dfs(dfs, 1);

    int curr_col = 0;

    for(int v: order) {
        if(v <= N) {
            for(int i=0; i<K; i++) {
                for(int j=curr_col; j < curr_col + 3; j++) {
                    grid[i][j] = v;
                }
            }

            for(int i=0; i<ad[v].size(); i++) {
                grid[2*i][curr_col + 1] = ad[v][i];
                grid[2*i + 1][curr_col+1] = v;
            }
            curr_col += 3;
        }
        else {
            for(int i=0; i<K; i++) {
                grid[i][curr_col] = v - N;
            }
            curr_col++;
        }
    }

    return grid;
}
#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...