Submission #1250953

#TimeUsernameProblemLanguageResultExecution timeMemory
1250953lukameladzeWorld Map (IOI25_worldmap)C++20
58 / 100
167 ms20212 KiB
#include "worldmap.h"
#include <vector>
#include <algorithm>
#include <cstdio>
#include <cassert>
#include <iostream>
#define pb push_back
using namespace std;
const int MX = 1005;
vector <int> v[MX], be[MX], de[MX];
vector <int> ord;
void dfs(int a, int p, vector<int> &fix) {
    fix[a] = 1;
    ord.pb(a);
    for (int to : v[a]) {
        if (to == p) continue;
        if (fix[to]) {
            be[a].pb(to);
        } else {
            de[a].pb(to);
            dfs(to, a, fix);
             ord.pb(a);
        }
        

    }
   
}
std::vector<std::vector<int>> create_map(int N, int M, std::vector<int> A, std::vector<int> B) {
    int n = N;
    ord.clear();
    vector <int> fix(n + 1, 0);
    for (int i = 0; i <= N; i++) {
        fix[i] = 0;
        v[i].clear();
        be[i].clear();
        de[i].clear();
    }
    for (int i = 0; i < M; i++) {
        v[A[i]].push_back(B[i]);
        v[B[i]].push_back(A[i]);
    }
    dfs(1, 0, fix);
    vector <vector<int>> ans;
    
    ans.clear();
    for (int i = 0; i < ord.size(); i++) {
        vector <int> vec;
        for (int j = 0; j < ord.size(); j++) {
            vec.pb(ord[i]);
        }
        ans.pb(vec);
    }
    vector <vector <int>> res;
    for (int i = 0; i < ord.size(); i++) {
        res.pb(ans[i]);
        int vert = ord[i];
        if (be[vert].size()) {
            vector <int> vec;
            for (int j = 0; j < be[vert].size(); j++) {
                vec.pb(be[vert][j]);
                vec.pb(vert);
            }
            res.pb(vec);
            vec.clear();
            for(int i = 0; i < ord.size(); i++) {
                vec.pb(vert);
            }
            res.pb(vec);
        }
    }
    int sz = res.size();
    for (int i = 0; i < sz; i++) {
        while (res[i].size() < sz) {
            res[i].pb(res[i].back());
        }
    }
    return res;

}
#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...