제출 #1254279

#제출 시각아이디문제언어결과실행 시간메모리
1254279nickolasarapidis세계 지도 (IOI25_worldmap)C++20
72 / 100
71 ms9404 KiB
#include "worldmap.h"
#include <bits/stdc++.h>
using namespace std;

vector<int> adj[45];

vector<int> et;
vector<bool> visited(45);

void dfs(int s, int e){
    visited[s] = true;
    et.push_back(s);
    for(auto u : adj[s]){
        if(u == e) continue;
        if(visited[u]) continue;
        dfs(u, s);
        et.push_back(s);
    }
}

vector<vector<int>> create_map(int N, int M, vector<int> A, vector<int> B){
    for(int i = 0; i < 45; i++){
        adj[i].clear();
    }
    et.clear();
    for(int i = 0; i < 45; i++){
        visited[i] = false;
    }
    for(int i = 0; i < M; i++){
        adj[A[i]].push_back(B[i]);
        adj[B[i]].push_back(A[i]);
    }
    dfs(1, -1);
    vector<vector<int>> ans(2*et.size() + 1, vector<int>(2*et.size() + 1));
    int cnt = 0;
    vector<bool> processed(N + 1, false);
    for(int i = 0; i < et.size(); i++){
        for(int j = 0; j < 2*et.size() + 1; j++){
            ans[cnt][j] = et[i];
        }
        if(processed[et[i]] == false){
            for(int j = 0; j < 2*et.size() + 1; j++){
                ans[cnt + 1][j] = et[i];
            }
            for(int j = 0; j < 2*et.size() + 1; j++){
                ans[cnt + 2][j] = et[i];
            }
            for(int j = 0; j < 2*adj[et[i]].size(); j += 2){
                ans[cnt + 1][j] = adj[et[i]][j/2];
            }
            cnt += 3;
            processed[et[i]] = true;
        }
        else{
            cnt++;
        }
    }
    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...