제출 #1250035

#제출 시각아이디문제언어결과실행 시간메모리
1250035AliyyiakbarWorld Map (IOI25_worldmap)C++20
72 / 100
138 ms9816 KiB
#include "bits/stdc++.h"
#include "worldmap.h"
using namespace std;

const int sz = 1e6 + 9;

vector<vector<int>> ans;
vector<vector<int>> v;
bitset<sz> bs;

int r;

void color(int c)
{
    for (int i = 0; i < (int)ans[r].size(); ++i)
    {
        if (!ans[r][i])
        {
            ans[r][i] = c;
        }
    }
    ++r;
}

bool dfs(int node)
{
    if (bs[node] == 1)
    {
        return false;
    }
    bs[node] = 1;
    color(node);
    for (int i = 0; i < (int)v[node].size(); ++i)
    {
        ans[r][i << 1LL] = v[node][i];
    }
    color(node);
    color(node);
    for (auto to : v[node])
    {
        if (dfs(to))
        {
            color(node);
        }
    }
    return true;
}

vector<vector<int>> create_map(int n, int m, vector<int> a, vector<int> b)
{
    ans.assign(n << 2LL, vector<int>(n << 2LL, 0LL));
    v.assign(n + 1, vector<int>());
    for (int i = 0; i <= 1e6; ++i)
    {
        bs[i] = 0;
    }
    for (int i = 0; i < m; ++i)
    {
        v[a[i]].push_back(b[i]);
        v[b[i]].push_back(a[i]);
    }
    r = 0l;
    dfs(1);
    while(r < (int)ans.size())
    {
        color(ans[r - 1][0]);
    }
    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...