Submission #1048852

#TimeUsernameProblemLanguageResultExecution timeMemory
1048852LittleOrangeSimurgh (IOI17_simurgh)C++17
Compilation error
0 ms0 KiB
#include "simurgh.h" #include<bits/stdc++.h> using namespace std; using ll = int; struct dsu{ ll n; vector<ll> p; dsu(ll N):n(N),p(N,-1){} ll g(ll i){ return p[i]<0?i:p[i] = g(p[i]); } bool m(ll a, ll b){ a = g(a); b = g(b); if(a==b) return false; if (p[a]>p[b]) swap(a,b); p[a] += p[b]; p[b] = a; return true; } }; std::vector<int> find_roads(int n, std::vector<int> u, std::vector<int> v) { mt19937_64 mt(random_device{}()); ll m = u.size(); if (m<=28){ for(ll j = 0;j<(1<<m);j++) if(__builtin_popcount(j)==n-1){ vector<ll> r; for(ll i = 0;i<m;i++) if(j>>i&1) r.push_back(i); dsu d(n); ll ok = 1; for(ll i : r){ if(!d.m(u[i],v[i]))ok = 0; } if(ok){ ll g = count_common_roads(r); if (g==n-1){ return r; } } } } vector<ll> ls(m); iota(ls.begin(),ls.end(),0);= vector<ll> a; { dsu d(n); for(ll i = 0;a.size()<n-1;i++) if(d.m(u[i],v[i]))a.push_back(i); } ll sc = count_common_roads(a); while(sc<n-1){ shuffle(a.begin(),a.end(),mt); vector<ll> b; for(ll i = 0;i<n-2;i++) b.push_back(a[i]); dsu d(n); for(ll i : b) d.m(u[i],v[i]); for(ll i = 0;b.size()<n-1;i++) if(d.m(u[i],v[i]))b.push_back(i); ll nsc = count_common_roads(b); if (nsc>sc){ sc = nsc; a = b; } } return a; }

Compilation message (stderr)

simurgh.cpp: In function 'std::vector<int> find_roads(int, std::vector<int>, std::vector<int>)':
simurgh.cpp:43:30: error: expected primary-expression before '=' token
   43 |  iota(ls.begin(),ls.end(),0);=
      |                              ^
simurgh.cpp:44:13: error: expected primary-expression before 'a'
   44 |  vector<ll> a;
      |             ^
simurgh.cpp:47:16: error: 'a' was not declared in this scope
   47 |   for(ll i = 0;a.size()<n-1;i++) if(d.m(u[i],v[i]))a.push_back(i);
      |                ^
simurgh.cpp:49:29: error: 'a' was not declared in this scope
   49 |  ll sc = count_common_roads(a);
      |                             ^
simurgh.cpp:56:24: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   56 |   for(ll i = 0;b.size()<n-1;i++) if(d.m(u[i],v[i]))b.push_back(i);
      |                ~~~~~~~~^~~~