Submission #1263196

#TimeUsernameProblemLanguageResultExecution timeMemory
1263196vtnooWorld Map (IOI25_worldmap)C++20
0 / 100
1 ms840 KiB
#include <bits/stdc++.h>

using namespace std;

const int K=240;
vector<vector<pair<int,int>>> adj;
vector<vector<int>> g;
int j;
bool vis[10000], vis2[10000];

void dfs(int u){
    vis[u]=true;
    for(int i=0;i<K;i++){
        g[i][j]=u;
    }
    j++;
    for(auto [v,idx]:adj[u]){
        if(vis[v]){
            if(!vis2[idx]){
                for(int i=0;i<K;i++){
                    g[i][j]=v;
                }
                j++;
                for(int i=0;i<K;i++){
                    g[i][j]=u;
                }
                j++;
                vis2[idx]=true;
            }
            continue;
        }
        vis2[idx]=true;
        dfs(v);
        for(int i=0;i<K;i++){
            g[i][j]=u;
        }
        j++;
    }
}

std::vector<std::vector<int>> create_map(int N, int M, std::vector<int> A, std::vector<int> B){
    j=0;
    memset(vis, 0, sizeof(vis));
    memset(vis2, 0, sizeof(vis2));
    adj.resize(0);
    g.resize(0);
    g.resize(K, vector<int> (K, -1));
    adj.resize(N+1);
    for(int i=0;i<M;i++){
        adj[A[i]].push_back({B[i],i});
        adj[B[i]].push_back({A[i],i});
    }
    dfs(1);
    for(int i=0;i<K;i++){
        for(int j0=0;j0<K;j0++){
            if(g[i][j0]==-1){
                g[i][j0-1]=g[i][j0];
            }
        }
    }
    return g;
}
#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...