Submission #1285141

#TimeUsernameProblemLanguageResultExecution timeMemory
1285141Jawad_Akbar_JJIsland Hopping (JOI24_island)C++20
65 / 100
5 ms868 KiB
#include <iostream> #include <vector> #include "island.h" using namespace std; const int M = 405; int Dfs[M], seen2[M], Edge[M][M], cur; void dfs2(int u, int stp){ for (int i=1;i<M;i++) if (Edge[u][i]) seen2[i] = cur; if (Dfs[u]) return; Dfs[u] = 1; // cout<<u<<endl; for (int k=1;k;k++){ int v = query(u, k); if (v == stp) return; seen2[v] = cur; // if (u == 4 and v == 3) // cout<<"tuck"<<endl; // cout<<" "<<v<<endl; Edge[u][v] = Edge[v][u] = 1; } } void dfs1(int u){ cur++; Dfs[u] = 1; // cout<<u<<" ->\n"; for (int k=1;k<u;k++){ int v = query(u, k); if (seen2[v] == cur or v > u) break; // cout<<" "<<v<<endl; Edge[u][v] = Edge[v][u] = 1; dfs2(v, u); } } void solve(int n, int l){ for (int i=n;i>=1;i--){ if (Dfs[i] == 0){ dfs1(i); continue; } for (int j=1;j<=n;j++){ if (Edge[i][j]) dfs2(j, i); } } for (int i=1;i<=n;i++){ for (int j=i+1;j<=n;j++) if (Edge[i][j]){ answer(i, j); // cout<<i<<" "<<j<<endl; } } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...