Submission #871566

#TimeUsernameProblemLanguageResultExecution timeMemory
871566Faisal_SaqibICC (CEOI16_icc)C++17
Compilation error
0 ms0 KiB
#include "icc.h" #include <iostream> #include <vector> using namespace std; #define vll vector<int> const int N=200; int par[N]; int sz[N]; void init(int n) { for(int i=1;i<=n;i++) { par[i]=i; sz[i]=1; } } int root(int x) { return (par[x]==x?x:par[x]=root(par[x])); } void join(int x,int y) { x=root(x); y=root(y); if(x!=y) { par[x]=y; sz[y]+=sz[x]; } } int n_n_n; vll modify(vll& a) { vll b; for(auto i:a) for(int j=1;j<=n_n_n;j++) if(root(j)==i) b.push_back(j); return b; } int check_edge(vll& a,vll& b) { int n=a.size(); int m=b.size(); int a_[n]; for(int i=0;i<n;i++) a_[i]=a[i]; int b_[m]; for(int i=0;i<m;i++) b_[i]=b[i]; return query(n,m,a_,b_); } vll fit={2},sed={2}; int fix_first(int l,int r) { if(l==r) return l; int mid=(l+r)/2; vll cur; for(int i=l;i<=mid;i++) cur.push_back(fit[i]); if(check_edge(cur,sed)) return fix_first(l,mid); else return fix_first(mid+1,r); } void between(vll& a,vll& b) { fit=a; sed=b; int ind=fix_first(0,((int)a.size())-1); // cout<<"Hello "<<' '<<ind<<' '<<a[ind]<<endl; fit={fit[ind]}; swap(sed,fit); ind=fix_first(0,((int)b.size())-1); // cout<<"Hello "<<' '<<ind<<' '<<b[ind]<<endl; fit={fit[ind]}; } bool found_=0; void solve(vll& big) { if(big.size()==2) { fit[0]=big[0]; sec[0]=big[1]; } if(big.size()==1) { return; } vll a,b; int n_=big.size(); for(int i=0;i<(n_/2);i++) a.push_back(big[i]); for(int j=(n_/2);j<n_;j++) b.push_back(big[j]); // cout<<"First "; // for(auto i:a) // { // cout<<i<<' '; // } // cout<<endl; // cout<<"Second "; // for(auto i:b) // { // cout<<i<<' '; // } // cout<<endl; vll c=modify(a),d=modify(b); if(check_edge(c,d)) { // cout<<"There is a edge between \n"; // for(auto i:c) // { // cout<<i<<' '; // } // cout<<endl; // for(auto i:d) // { // cout<<i<<' '; // } // cout<<endl; between(c,d); found_=1; } else { solve(a); if(!found_) solve(b); } } void run(int n) { n_n_n=n; init(n); int q=n-1; while(q--) { // cout<<"Add edge \n"; // int x_,y_; // cin>>x_>>y_; // ka[x_][y_]=1; // ka[y_][x_]=1; vll big; for(int i=1;i<=n;i++) if(par[i]==i) big.push_back(i); // for(auto i:big) // { // cout<<i<<' '; // } // cout<<endl; // cout<<"HEllo "<<check_edge(a,b)<<endl;; found_=0; solve(big); // cout<<"edge is "<<fit[0]<<' '<<sed[0]<<endl; join(fit[0],sed[0]); setRoad(fit[0],sed[0]); // break; } } // int main() // { // int n; // cin>>n; // run(n); // }

Compilation message (stderr)

icc.cpp: In function 'void solve(std::vector<int>&)':
icc.cpp:85:9: error: 'sec' was not declared in this scope; did you mean 'sed'?
   85 |         sec[0]=big[1];
      |         ^~~
      |         sed