Submission #1258496

#TimeUsernameProblemLanguageResultExecution timeMemory
1258496avighnaWorld Map (IOI25_worldmap)C++20
72 / 100
73 ms9544 KiB
#include <bits/stdc++.h>

std::vector<std::vector<int>> adj;
std::vector<int> columns;
std::vector<bool> vis;

void dfs(int u, std::vector<int> &row) {
  if (vis[u]) {
    return;
  }
  vis[u] = true;
  row.push_back(u);
  columns[u] = row.size();
  row.push_back(u);
  row.push_back(u);
  for (int &i : adj[u]) {
    if (vis[i]) {
      continue;
    }
    dfs(i, row);
    row.push_back(u);
  }
}

std::vector<std::vector<int>> create_map(int N, int M, std::vector<int> A,
                                         std::vector<int> B) {
  vis.resize(N + 1);
  columns.resize(N + 1);
  adj.resize(N + 1);
  adj.clear();
  vis.clear();
  for (int i = 0; i < M; ++i) {
    adj[A[i]].push_back(B[i]);
    adj[B[i]].push_back(A[i]);
  }

  std::vector<int> row;
  dfs(1, row);
  std::vector ans(row.size(), row);
  for (int i = 1; i <= N; ++i) {
    int j = 0;
    for (int &u : adj[i]) {
      ans[j][columns[i]] = u;
      j += 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...