Submission #1287219

#TimeUsernameProblemLanguageResultExecution timeMemory
1287219ecen30World Map (IOI25_worldmap)C++20
Compilation error
0 ms0 KiB
//testing AI code #include "worldmap.h" #include <vector> #include <algorithm> using namespace std; vector<vector<int>> create_map(int N, int M, vector<int> A, vector<int> B) { // Step 1: Build adjacency graph (0-indexed) vector<vector<int>> G(N); for (int i = 0; i < M; i++) { A[i]--; B[i]--; // convert to 0-indexed G[A[i]].push_back(B[i]); G[B[i]].push_back(A[i]); } // Step 2: DFS to create a spanning tree and record tour vector<int> tour; vector<bool> visited(N, false); vector<int> depth(N, 0); vector<int> extraA, extraB; function<void(int)> dfs = [&](int u) { visited[u] = true; tour.push_back(u); for (int v : G[u]) { if (!visited[v]) { depth[v] = depth[u] + 1; dfs(v); tour.push_back(u); } else if (depth[u] < depth[v]) { extraA.push_back(u); extraB.push_back(v); } } }; dfs(0); // Step 3: Assign ranks for tour positioning vector<int> rank(N, -1), holder(N, -1); int L = tour.size(); for (int i = 0; i < L; i++) { int d = min(i, L - 1 - i); if (rank[tour[i]] < d) { rank[tour[i]] = d; holder[tour[i]] = i; } } // Step 4: Prepare adjacency lists for extra edges vector<vector<int>> extra(N); for (int i = 0; i < (int)extraA.size(); i++) { if (rank[extraA[i]] < rank[extraB[i]]) swap(extraA[i], extraB[i]); extra[extraA[i]].push_back(extraB[i]); } // Step 5: Construct grid int K = 2 * N; vector<vector<int>> grid(K, vector<int>(K, 0)); int cur = 0; for (int i = 0; i < L; i++) { int u = tour[i]; if (i == holder[u]) { int pos = 0; for (int j = 0; j < K; j++) { int a = cur - j; if (0 <= a && a < K) grid[j][a] = u; int b = cur + 1 - j; if (0 <= b && b < K) { if (pos < (int)extra[u].size()) { grid[j][b] = extra[u][pos++]; } else { grid[j][b] = u; } } int c = cur + 2 - j; if (0 <= c && c < K) grid[j][c] = u; } cur += 3; } else { for (int j = 0; j < K; j++) { int a = cur - j; if (0 <= a && a < K) grid[j][a] = u; } cur += 1; } } // Step 6: Convert back to 1-indexed colors for (int i = 0; i < K; i++) for (int j = 0; j < K; j++) grid[i][j]++; return grid; }

Compilation message (stderr)

worldmap.cpp: In function 'std::vector<std::vector<int> > create_map(int, int, std::vector<int>, std::vector<int>)':
worldmap.cpp:22:5: error: 'function' was not declared in this scope
   22 |     function<void(int)> dfs = [&](int u) {
      |     ^~~~~~~~
worldmap.cpp:5:1: note: 'std::function' is defined in header '<functional>'; did you forget to '#include <functional>'?
    4 | #include <algorithm>
  +++ |+#include <functional>
    5 | using namespace std;
worldmap.cpp:22:14: error: expected primary-expression before 'void'
   22 |     function<void(int)> dfs = [&](int u) {
      |              ^~~~
worldmap.cpp:36:5: error: 'dfs' was not declared in this scope
   36 |     dfs(0);
      |     ^~~