제출 #1318359

#제출 시각아이디문제언어결과실행 시간메모리
1318359ezzzayWorld Map (IOI25_worldmap)C++20
22 / 100
31 ms4316 KiB
#include<bits/stdc++.h> using namespace std; #define ff first #define ss second #define pb push_back vector<int>adj[50]; vector<int>rt; bool vis[100]; void dfs(int a){ vis[a]=1; rt.pb(a); for(auto b:adj[a]){ if(vis[b])continue; dfs(b); rt.pb(a); } } std::vector<std::vector<int>> create_map(int N, int M, std::vector<int> A, std::vector<int> B) { for(int i=1;i<=N;i++){ adj[i].clear(); } for(int i=0;i<M;i++){ adj[A[i]].pb(B[i]); adj[B[i]].pb(A[i]); } rt.clear(); for(int i=1;i<=N;i++)vis[i]=0; dfs(1); int h=N*3; vector< vector< int> > v(h, vector<int> (h)); for(int i=0;i<h;i++){ for(int j=0;j<h;j++)v[i][j]=1; } for(int i=0;i<rt.size();i++){ int x=i*3; for(int j=0;j<=min(x,h-1);j++){ int k=x-j; if(k>h-1)continue; v[j][k]=rt[i]; } x=i*3+2; for(int j=0;j<=min(x,h-1);j++){ int k=x-j; if(k>h-1)continue; v[j][k]=rt[i]; } x=i*3+1; for(int j=0;j<=min(x,h-1);j++){ int k=x-j; if(k>h-1)continue; v[j][k]=rt[i]; } vector<pair<int,int>>del; for(int j=0;j<=min(x,h-1);j++){ int k=x-j; if(k>h-1)continue; int a=rt[i]; if(j<adj[a].size()){ v[j][k]=adj[a][j]; del.pb({a,adj[a][j]}); } } for(auto p:del){ erase(adj[p.ff],p.ss); erase(adj[p.ss],p.ff); } } return v; }
#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...