제출 #1284820

#제출 시각아이디문제언어결과실행 시간메모리
1284820Faisal_SaqibIsland Hopping (JOI24_island)C++20
2 / 100
4 ms432 KiB
#include "island.h" #include <bits/stdc++.h> using namespace std; #define ll long long const int NASA=1000; // vector<int> qry[N]; bool vis[NASA]; int limit_n; set<pair<ll,ll>> edg; void dfs(int x,int p=-1) // worst case n^2 { vis[x]=1; for(int k=1;k<=limit_n-1;k++) { int y=query(x,k); // cout<<"Queried "<<x<<' '<<k<<" got y: "<<y<<" vis: "<<vis[y]<<endl; if(y==p)continue; // dont break on trying to visit parent if(vis[y])break; // one of the grand child hehe! if(x<y) { edg.insert({x,y}); } else{ edg.insert({y,x}); } dfs(y,x); } } void solve(int n, int l) { limit_n=n; for(int i=1;i<=n;i++)vis[i]=0; edg.clear(); dfs(1); // for(int i=1;i<=n;i++) // { // qry[i].clear(); // for(int k=1;k<=min(l/n,n-1);k++) // { // qry[i].push_back(query(i,k)); // } // } // // neighbour of a vertex are a prefix of it qry vector // set<pair<int,int>> edge; // for(int i=1;i<=n;i++) // { // set<ll> cur; // for(auto j:qry[i]) // { // if(cur.find(j)!=cur.end()) // { // break; // grandchild reached // } // if(i<j) // { // edge.insert({i,j}); // } // else // { // edge.insert({j,i}); // } // for(auto k:qry[j]) // { // if(k!=i) // { // cur.insert(k); // break; // } // } // } // } if(edg.size()<(n-1)) { exit(-1); } for(auto x:edg) { answer(x.first,x.second); } }
#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...