제출 #1251445

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

//  1
// 2  3
//   4 5
//
//
//   111111111
//   222213333
//   111134435

using namespace std;

set<int> vis;
set<pair<int, int>> pair_vis;
vector<int> path;

vector<vector<int>> adj;

void dfs(int x, int par = -1) {
    pair_vis.insert({min(x, par), max(x, par)});
    path.push_back(x);
    if(vis.count(x)) return;
    vis.insert(x);
    for(int ch : adj[x]) {
        if(ch == par) continue;
        if(pair_vis.count({min(ch, x), max(ch, x)})) continue;
        dfs(ch, x);
        path.push_back(x);
    }
}

vector<vector<int>> create_map(int N, int M, std::vector<int> a, std::vector<int> b) {
    vis.clear();
    pair_vis.clear();
    vector<int>().swap(path);
    vector<vector<int>>().swap(adj);
    adj.resize(N+1);
    for(int i = 0; i < M; i++) {
        adj[a[i]].push_back(b[i]);
        adj[b[i]].push_back(a[i]);
    }
    dfs(1);
    vector<vector<int>> ans(path.size());
    for(int i = 0; i < path.size(); i++) ans[i] = vector<int>(path.size(), path[i]);
    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...