Submission #1284836

#TimeUsernameProblemLanguageResultExecution timeMemory
1284836Faisal_SaqibIsland Hopping (JOI24_island)C++20
35 / 100
219 ms976 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) { vis[x]=1; // int sz=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! // fuck maybe grand child does not exist 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); } }*/ // /* #include "island.h" #include <bits/stdc++.h> using namespace std; #define ll long long const int N=500; vector<int> qry[N],nei[N]; void solve(int n, int l) { for(int i=1;i<=n;i++) { nei[i].clear(); 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 // grand childeren are subarray // same goes on // level-wise of tree when root is i is equal to qry[i] 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) { nei[i].push_back(j); nei[j].push_back(i); edge.insert({i,j}); } else { nei[i].push_back(j); nei[j].push_back(i); edge.insert({j,i}); } for(auto k:qry[j]) { if(k!=i) { cur.insert(k); break; } } } } if(edge.size()<(n-1)) { 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) { // nei[i].push_back(j); // nei[j].push_back(i); edge.insert({i,j}); } else { // nei[i].push_back(j); // nei[j].push_back(i); edge.insert({j,i}); } for(auto k:nei[j]) // neighhbours of j such that they for sure have edge { cur.insert(k); } // for(auto k:qry[j]) // { // if(k!=i) // { // cur.insert(k); // break; // } // } } } } for(auto x:edge) { 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...