Submission #1228530

#TimeUsernameProblemLanguageResultExecution timeMemory
1228530noyancanturkIsland Hopping (JOI24_island)C++20
100 / 100
2 ms444 KiB
#include "island.h" #include<bits/stdc++.h> using namespace std; #define pb push_back using pii=pair<int,int>; namespace { const int lim=500; vector<int>v[lim]; int haveedge[lim][lim]; vector<int>roots; int isroot[lim]; vector<pii>ans; int parent[lim]; int find(int i){ if(i==parent[i])return i; return parent[i]=find(parent[i]); } void unite(int i,int j){ parent[find(i)]=find(j); } } void solve(int n, int L) { for(int i=1;i<=n;i++)parent[i]=i; roots.pb(1); for(int i=2;i<=n;i++){ int res=query(i,1); if(res<i){ v[i].pb(res); v[res].pb(i); haveedge[i][res]=haveedge[res][i]=1; ans.pb({res,i}); unite(i,res); }else{ roots.pb(i); isroot[i]=1; } } for(int i=2;i<=n;i++){ if(isroot[i])continue; for(int k=2;k<=n-1;k++){ int res=query(i,k); if(res<i){ if(find(i)==find(res)){ break; }else{ unite(i,res); ans.pb({res,i}); } }else break; } } for(auto[x,y]:ans){ answer(x,y); } /* int variable_example = query(1, 1); for (int i = 2; i <= N; i++) { answer(1, i); } */ }
#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...