| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 1285532 | eri16 | 세계 지도 (IOI25_worldmap) | C++20 | 0 ms | 0 KiB | 
#include <bits/stdc++.h>
#include "worldmap.h"
using namespace std;
vector <int> VV;
void dfs(vector<vector<int>>& v,int mx,int node,vector<int>& visited){
    VV.push_back(node);
    int tt=0;
    for (int i=0; i<v[node].size(); i++){
        if (visited[v[node][i]]==0){
            tt++;
            visited[v[node][i]]=1;
            dfs(v,mx,v[node][i],visited);
            VV.push_back(node);
        }
    }
}
vector<vector<int>> create_map(int N, int M, const vector<int>& A, const vector<int>& B){
    
    vector<vector<int>> v(N+1);
    vector<vector<int>> vt(N+1, vector<int>(N+1, 0));
    
    
    for (int i=0; i<M; i++){
        v[A[i]].push_back(B[i]);
        vt[A[i]][B[i]]=1;
        v[B[i]].push_back(A[i]);        
        vt[B[i]][A[i]]=1;
    }
    
    if (N==1){
        return ({{1}});
    }
    
    vector<int> visited(N+1,0);       
    
    dfs(v,N,1,visited);
    
    int ln=VV.size();
    
    ln=2*N+VV.size();
    
    vector <vector <int>> ans(ln, vector<int>(ln, 0));
    
    vector <int> vvv(N+1,0);
    
    int k=0;
    
    for (int i=0; i<VV.size(); i++){
        
        if (vvv[VV[i]]==1){
         
            for (int j=0; j<ln; j++){
                ans[k][j]=VV[i];
            } 
            
            k++;
        }
        
        else{
            vvv[VV[i]]=1;
        
            for (int j=0; j<ln; j++){
                ans[k][j]=VV[i];
            }         
            
            for (int j=0; j<ln; j++){
                if (j%2==1 && j<2*N){
                    if (vt[VV[i]][j/2+1]==1){
                        ans[k+1][j]=j/2+1;
                    }
                    else{
                        ans[k+1][j]=VV[i];
                    }
                }
                else{
                    ans[k+1][j]=VV[i];
                }
            }
            
            
            for (int j=0; j<ln; j++){
                ans[k+2][j]=VV[i];
            }             
            k=k+3;
        }
    }
    return (ans);
}
