Submission #1257826

#TimeUsernameProblemLanguageResultExecution timeMemory
1257826Rainmaker2627World Map (IOI25_worldmap)C++20
100 / 100
26 ms2888 KiB
#include "worldmap.h" #include<bits/stdc++.h> using namespace std; int n, cnt=0, glob_diag=0; vector<int> vis; vector<vector<int>> ans, adj; void fill(int d, int v) { for (int x = 0; x < 2*n; x++) { if (0<=d-x && d-x<2*n) ans[x][d-x]=v; } } void dfs(int u) { vis[u]=++cnt; int diag = glob_diag + 1; glob_diag += 3; fill(diag - 1, u); fill(diag, u); fill(diag + 1, u); int x=max(0, diag-2*n+1); for (int v : adj[u]) { if (!vis[v]) { dfs(v); fill(glob_diag++, u); } else if (vis[v]<vis[u]) { ans.at(x).at(diag-x)=v; ++x; } } } vector<vector<int>> create_map(int N, int M, vector<int> A, vector<int> B) { n=N; cnt=0; glob_diag=0; ans.assign(2*N, vector<int>(2*N, 1)); adj.assign(N+1, vector<int>()); vis.assign(N+1, 0); for (int i = 0; i < M; ++i) { adj[A[i]].push_back(B[i]); adj[B[i]].push_back(A[i]); } dfs(1); 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...