제출 #1253336

#제출 시각아이디문제언어결과실행 시간메모리
1253336vuviet세계 지도 (IOI25_worldmap)C++20
5 / 100
8 ms1092 KiB
#include <bits/stdc++.h> using namespace std; // Subtask 5 solution: N <= 15, any K <= 240 works. We choose K = 4*N. // Build multi-source BFS from seeds to color grid satisfying adjacency constraints. vector<vector<int>> create_map(int N, int M, vector<int> A, vector<int> B) { // Build adjacency matrix vector<vector<bool>> adj(N+1, vector<bool>(N+1, false)); for(int i = 1; i <= N; i++) adj[i][i] = true; for(int i = 0; i < M; i++){ adj[A[i]][B[i]] = adj[B[i]][A[i]] = true; } int K = 4 * N; vector<vector<int>> grid(K, vector<int>(K, 0)); queue<pair<int,int>> q; // Place initial seeds for each country at (3*(i-1), 3*(i-1)) for(int i = 1; i <= N; i++){ int r = 3*(i-1); int c = 3*(i-1); grid[r][c] = i; q.emplace(r, c); } int dr[4] = {-1,1,0,0}, dc[4] = {0,0,-1,1}; auto can_color = [&](int r, int c, int col){ for(int d = 0; d < 4; d++){ int nr = r + dr[d], nc = c + dc[d]; if(nr<0 || nr>=K || nc<0 || nc>=K) continue; int k = grid[nr][nc]; if(k != 0 && !adj[col][k]) return false; } return true; }; // Multi-source BFS while(!q.empty()){ auto [r,c] = q.front(); q.pop(); int col = grid[r][c]; for(int d = 0; d < 4; d++){ int nr = r + dr[d], nc = c + dc[d]; if(nr<0 || nr>=K || nc<0 || nc>=K) continue; if(grid[nr][nc] == 0 && can_color(nr, nc, col)){ grid[nr][nc] = col; q.emplace(nr, nc); } } } // Fill any remaining zeros with a valid color for(int r = 0; r < K; r++){ for(int c = 0; c < K; c++){ if(grid[r][c] == 0){ for(int col = 1; col <= N; col++){ if(can_color(r, c, col)){ grid[r][c] = col; break; } } } } } return grid; }
#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...