Submission #1309480

#TimeUsernameProblemLanguageResultExecution timeMemory
1309480Faisal_Saqib세계 지도 (IOI25_worldmap)C++20
0 / 100
52 ms7448 KiB
#include <vector>
#include <iostream>
// #include "worldmap.h"
using namespace std;
const int N=50;
vector<int> ma[N],tour;
int h[N];
bool vis[N];
void dfs(int x,int p=0)
{
    vis[x]=1;
    tour.push_back(x); // O(n)
    for(auto y:ma[x])
    {
        if(y^p)
        {
            if(!vis[y])
            {
                h[y]=h[x]+1;
                dfs(y,x);
                tour.push_back(x); // O(m)
            }
        }
    }
}
std::vector<std::vector<int>> create_map(int n, int m, std::vector<int> edg0, std::vector<int> edg1)
{
    for(int i=0;i<=n;i++)
    {
        ma[i].clear();
        vis[i]=0;
    }
    for(int j=0;j<m;j++)
    {
        ma[edg0[j]].push_back(edg1[j]);
        ma[edg1[j]].push_back(edg0[j]);
    }
    tour.clear();
    dfs(1);
    int K=tour.size();
    int fK=K;
    vector<int> ftim(N+5,-1);
    vector<vector<int>> answer;
    for(int i=0;i<K;i++)
    {
        int x=tour[i];
        vector<int> row;
        for(int j=0;j<K;j++)
        {
            row.push_back(x);
        }
        answer.push_back(row); // O(2*n-1)
        if(ftim[x]!=-1)continue;
        ftim[x]=i;
        // O(n)
        // ma[x][j]
        int sz=ma[x].size();
        vector<int> cur;
        for(int j=0;j<sz;j++) // atmost n so 2*n
        {
            cur.push_back(ma[x][j]);
            cur.push_back(x);
        }
        fK=max(fK,(int)(cur.size()));
        answer.push_back(cur);
        answer.push_back(row);
    }
    fK=max(fK,(int)(answer.size()));
    for(auto&x:answer)
    {
        while(x.size()<fK)
        {
            x.push_back(x.back());
        }
    }
    while(answer.size()<fK)
    {
        answer.push_back(answer.back());
    }
    // if(fK>240)
    // {
    //     return {};
    // }
    return answer;
}
#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...