제출 #1296292

#제출 시각아이디문제언어결과실행 시간메모리
1296292lizi14세계 지도 (IOI25_worldmap)C++20
72 / 100
64 ms8920 KiB
#include "worldmap.h" #include <cassert> #include <cstdio> #include <bits/stdc++.h> using namespace std; vector<int>j; map<pair<int,int>,int>mp; //const int N1=50; vector<int>v[500]; //#include "worldmap.h" int x[500]; int yuuu; int bati[500][500]; void dfs(int parent, int u) { x[u]=1; for(int to:v[u]){ if (!x[to]){ j.push_back(u); dfs(u,to); } } if(u!=1)j.push_back(u); } vector<vector<int>>create_map(int N, int M,vector<int> A,vector<int> B) { for(int i=0; i<=N; i++) { v[i].clear(); x[i]=0; for(int j=0; j<=N; j++){ bati[i][j]=0; } } j.clear(); mp.clear(); for(int i=1; i<=N; i++){ for(int j=1; j<=N; j++){ bati[i][j]=0; } } for(int i=0; i<M; i++){ v[A[i]].push_back(B[i]); v[B[i]].push_back(A[i]); bati[A[i]][B[i]]=1; bati[B[i]][A[i]]=1; } for(int i=0; i<500; i++){ x[i]=0; } j.clear(); dfs(0,1); //for(int u=1; u<=N; u++) if(x[u]==0) dfs(u,0); // for(auto a:j){ // cout<<a<<" "; // } // cout<<endl; for(int u=1; u<=N; u++){ if(x[u]==0)dfs(0,u); } vector<int>drnachvi; drnachvi.clear(); mp.clear(); int ku=j.size(); int mtvleli=0; int zuigetsu[N+1]; for(int i=0; i<=N; i++){ zuigetsu[i]=0; } for(int i=0; i<M; i++){ // v[A[i]].push_back(B[i]); // v[B[i]].push_back(A[i]); bati[A[i]][B[i]]=1; bati[B[i]][A[i]]=1; } for(int i=0; i<j.size(); i++){ drnachvi.push_back(j[i]); if(zuigetsu[j[i]]==0){ drnachvi.push_back(-19); drnachvi.push_back(j[i]); zuigetsu[j[i]]=1; mtvleli++; if(mtvleli==N)break; } } for(int u=1; mtvleli<N && u<=N; u++){ if(zuigetsu[u]==0) { drnachvi.push_back(u); drnachvi.push_back(-19); drnachvi.push_back(u); zuigetsu[u]=1; mtvleli++; } } int batiii=drnachvi.size(); vector<vector<int>> ans(batiii, vector<int>(batiii,-19)); for(int i=0; i<batiii; i++){ ans[0][i]=drnachvi[i]; } for(int i=1; i<=N; i++){ for(int j=1; j<i; j++){ if(bati[i][j]==1){ pair<int,int>p={i,j}; if(mp[p]==0){ int maomao=-1; for(int juuu=0; juuu<batiii; juuu++){ if(drnachvi[juuu]==j){ maomao=juuu; break; } } if(maomao!=-1){ maomao++; for(int ka=0; ka<batiii; ka++){ if(ans[ka][maomao]==-19){ ans[ka][maomao]=i; ans[ka][maomao-1]=j; if(ka<batiii-1){ ans[ka+1][maomao]=j; ans[ka+1][maomao-1]=j; } break; } } } mp[p]=1; } } } } for(int i=0; i<batiii; i++){ for(int j=0; j<batiii; j++){ if(ans[i][j]==-19){ if(i==0){ if(j>0)ans[i][j]=ans[i][j-1]; else ans[i][j]=1; } else ans[i][j]=ans[i-1][j]; } } } // if(ans.size()>2){ // vector<vector<int>>ixvi(ans.size()-2, vector<int>(ans.size()-2)); // for(int i=0; i<ans.size()-2; i++){ // for(int j=0; j<ans.size()-2; j++){ // ixvi[i][j]=ans[i][j]; // } // } // return ixvi; // } // else return ans; 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...