Submission #1293558

#TimeUsernameProblemLanguageResultExecution timeMemory
1293558tschav_World Map (IOI25_worldmap)C++20
Compilation error
0 ms0 KiB
#include "worldmap.h"
#include <bits/stdc++.h>
using namespace std;


vector<vector<int>> create_map(int n, int m, vector<int> A, vector<int> B) {

    vector<vector<int>> adj;
    adj.resize(n+1,vector<int>{});

    for(int i = 0; i < m; ++i) {
        adj[A[i]].emplace_back(B[i]);
        adj[B[i]].emplace_back(A[i]);
    }

    if(m == 0){
        return vector<vector<int>>{vector<int>{1}};
    }

    //testing

    if(true){

        vector<vector<int>> ans(3 * n, vector<int>(3 * n, 0));

        vector<int> row;
        vector<bool> vis(n+1,false);

        auto dfs = [&](int ind, auto &&dfs) -> void {
            vis[u]=true;
            for(auto &u : adj[ind]) {
                if(vis[u]) continue;

                row.emplace_back(ind);
                dfs(u,ind,dfs);
            }
            row.push_back(ind);
        };

        dfs(1, -1, dfs);

        for(int i = 0; i < n; ++i) {
            int u = row[i];
            queue<int> Q;

            for(auto &v : adj[u]){
                Q.push(v);
            }
            int p1 = 3*i;
            int p2 = 3*i+1;
            int p3 = 3*i+2;
            for(int j = 0; j < 3 * n; ++j){

                if(j & 1 or Q.empty()){
                    ans[j][p1]=ans[j][p2]=ans[j][p3]=u;
                }else{
                    ans[j][p1]=ans[j][p3]=u;
                    ans[j][p2]=Q.front();
                    Q.pop();
                }

            }

        }

        return ans;

    }

    //testing

    if(n <= 15) {

        vector<int> row;

        vector<bool> vis(n+1,false);

        auto dfs = [&](int ind, auto &&dfs) -> void {
            vis[ind] = true;
            for(auto &u : adj[ind]) {
                if(vis[u]) continue;
                row.emplace_back(ind);
                row.emplace_back(u);
            }
            if(row.back() != ind) row.emplace_back(ind);
            for(auto &u : adj[ind]) {
                if(vis[u]) continue;
                dfs(u, dfs);
                row.emplace_back(ind);
            }
        };

        dfs(1,dfs);

        int sz = row.size();

        vector<vector<int>> ans;

        for(int i = 0; i < sz; ++i){
            ans.push_back(row);
        }

        return ans;
    }

    if(m == n-1) {

        vector<int> row;

        auto dfs = [&](int ind, int par, auto &&dfs) -> void {
            for(auto &u : adj[ind]) {
                if(u == par) continue;

                row.emplace_back(ind);
                dfs(u,ind,dfs);
            }
            if(ind != 1) row.push_back(ind);
        };

        dfs(1, -1, dfs);

        int sz = row.size();

        vector<vector<int>> ans;

        for(int i = 0; i < sz; ++i){
            ans.push_back(row);
        }

        return ans;

    }

    vector<vector<int>> ans(2*n,vector<int>(2*n,1));

    for(int i = 0; i < 2 * n; ++i) {
        if(i & 1) {
            int u = (i+1)/2;
            queue<int> Q;
            for(auto &v : adj[u]) Q.push(v);
            for(int j = 0; j < 2 * n; ++j) {
                if(j & 1) {
                    if(Q.empty()) {
                        ans[i][j] = u;
                        continue;
                    }
                    ans[i][j] = Q.front();
                    Q.pop();
                } else {
                    ans[i][j] = u;
                }
            }
        } else {
            for(int j = 0; j < 2 * n; ++j) {
                ans[i][j] = 1;
            }
        }
    }

    return ans;
}

Compilation message (stderr)

worldmap.cpp: In lambda function:
worldmap.cpp:30:17: error: 'u' was not declared in this scope
   30 |             vis[u]=true;
      |                 ^
worldmap.cpp: In function 'std::vector<std::vector<int> > create_map(int, int, std::vector<int>, std::vector<int>)':
worldmap.cpp:40:12: error: no match for call to '(create_map(int, int, std::vector<int>, std::vector<int>)::<lambda(int, auto:54&&)>) (int, int, create_map(int, int, std::vector<int>, std::vector<int>)::<lambda(int, auto:54&&)>&)'
   40 |         dfs(1, -1, dfs);
      |         ~~~^~~~~~~~~~~~
worldmap.cpp:29:20: note: candidate: 'template<class auto:54> create_map(int, int, std::vector<int>, std::vector<int>)::<lambda(int, auto:54&&)>'
   29 |         auto dfs = [&](int ind, auto &&dfs) -> void {
      |                    ^
worldmap.cpp:29:20: note:   template argument deduction/substitution failed:
worldmap.cpp:40:12: note:   candidate expects 2 arguments, 3 provided
   40 |         dfs(1, -1, dfs);
      |         ~~~^~~~~~~~~~~~