제출 #598582

#제출 시각아이디문제언어결과실행 시간메모리
598582definitelynotmeeKeys (IOI21_keys)C++17
컴파일 에러
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; #define ff first #define ss second #define all(x) x.begin(), x.end() using ll = long long; using pii = pair<int,int>; using pll = pair<ll,ll>; template<typename t> using matrix = vector<vector<t>>; std::vector<int> find_reachable(std::vector<int> r, std::vector<int> u, std::vector<int> v, std::vector<int> c) { vector<int> ans(r.size(), 1); int n = r.size(); matrix<pii> g(n); for(int i = 0; i < u.size(); i++){ g[u[i]].push_back({v[i],c[i]}); g[v[i]].push_back({u[i],c[i]}); } if(n <= 2000){ for(int root = 0; root < n; root++){ vector<int> check(n), got(n); matrix<int> whenget(n); vector<int> st = {root}; while(!st.empty()){ int cur = st.back(); st.pop_back(); if(check[cur]) continue; check[cur] = 1; got[r[cur]] = 1; while(!whenget[r[cur]].empty()){ st.push_back(whenget[r[cur]].back()); whenget[r[cur]].pop_back(); } for(pii i : g[cur]){ if(got[i.ss]) st.push_back(i.ff); else whenget[i.ss].push_back(i.ff); } } ans[root] = accumulate(all(check),0); } int mini = *min_element(all(ans)); for(int i = 0; i < n; i++) ans[i] = ans[i] == mini; } else { vector<int> color(n); for(int i = 0; i < n; i++) color[i] = 1<<c[i]; int it = 30; vector<int> scc(n); while(it--){ fill(all(scc),0); vector<int> check(n), combcolor(n); vector<int> out; auto dfs =[&](int id, auto dfs)->void{ check[id] = 1; for(pii i : g[id]){ if(((1<<i.ss)&color[id])&&!check[i.ff]) dfs(i.ff,dfs); } out.push_back(id); }; for(int i = 0; i < n; i++){ if(!check[i]) dfs(i,dfs); } int timer = -1; auto rdfs =[&](int id, auto dfs)->void{ check[id] = 2; scc[id] = timer; combcolor|=color[id]; for(pii i : g[id]){ if(((1<<i.ss)&color[i.ff])&&check[i.ff]!=2) dfs(i.ff,dfs); } } for(int i = 0; i < n; i++){ if(check[out[i]]!=2) timer++,rdfs(out[i],rdfs); } for(int i = 0; i < n; i++){ color[i] = combcolor[scc[i]]; } } vector<int> isvalid(n,1), sz(n,1<<30); for(int v = 0; v < n; v++){ for(pii i : g[v]){ if(((1<<i.ss)&color[v])&&scc[i.ff]!=scc[v]) isvalid[v] = 0; } if(sz[scc[v]] == 1<<30) sz[scc[v]] = 0; sz[scc[v]]++; } int mini = 1<<30; for(int i = 0; i < n; i++) if(isvalid[i]) mini = min(mini,sz[i]); for(int i = 0; i < n; i++){ ans[i] = sz[scc[i]] == mini; } } return ans; }

컴파일 시 표준 에러 (stderr) 메시지

keys.cpp: In function 'std::vector<int> find_reachable(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
keys.cpp:18:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |  for(int i = 0; i < u.size(); i++){
      |                 ~~^~~~~~~~~~
keys.cpp: In lambda function:
keys.cpp:82:14: error: no match for 'operator|=' (operand types are 'std::vector<int>' and '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'})
   82 |     combcolor|=color[id];
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:45,
                 from keys.cpp:1:
/usr/include/c++/10/cstddef:160:3: note: candidate: 'constexpr std::byte& std::operator|=(std::byte&, std::byte)'
  160 |   operator|=(byte& __l, byte __r) noexcept
      |   ^~~~~~~~
/usr/include/c++/10/cstddef:160:20: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::byte&'
  160 |   operator|=(byte& __l, byte __r) noexcept
      |              ~~~~~~^~~
In file included from /usr/include/c++/10/ios:42,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from keys.cpp:1:
/usr/include/c++/10/bits/ios_base.h:99:3: note: candidate: 'const std::_Ios_Fmtflags& std::operator|=(std::_Ios_Fmtflags&, std::_Ios_Fmtflags)'
   99 |   operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
      |   ^~~~~~~~
/usr/include/c++/10/bits/ios_base.h:99:29: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::_Ios_Fmtflags&'
   99 |   operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
      |              ~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/ios_base.h:141:3: note: candidate: 'const std::_Ios_Openmode& std::operator|=(std::_Ios_Openmode&, std::_Ios_Openmode)'
  141 |   operator|=(_Ios_Openmode& __a, _Ios_Openmode __b)
      |   ^~~~~~~~
/usr/include/c++/10/bits/ios_base.h:141:29: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::_Ios_Openmode&'
  141 |   operator|=(_Ios_Openmode& __a, _Ios_Openmode __b)
      |              ~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/ios_base.h:181:3: note: candidate: 'const std::_Ios_Iostate& std::operator|=(std::_Ios_Iostate&, std::_Ios_Iostate)'
  181 |   operator|=(_Ios_Iostate& __a, _Ios_Iostate __b)
      |   ^~~~~~~~
/usr/include/c++/10/bits/ios_base.h:181:28: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::_Ios_Iostate&'
  181 |   operator|=(_Ios_Iostate& __a, _Ios_Iostate __b)
      |              ~~~~~~~~~~~~~~^~~
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:105,
                 from keys.cpp:1:
/usr/include/c++/10/future:167:18: note: candidate: 'std::launch& std::operator|=(std::launch&, std::launch)'
  167 |   inline launch& operator|=(launch& __x, launch __y)
      |                  ^~~~~~~~
/usr/include/c++/10/future:167:37: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::launch&'
  167 |   inline launch& operator|=(launch& __x, launch __y)
      |                             ~~~~~~~~^~~
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:127,
                 from keys.cpp:1:
/usr/include/c++/10/charconv:680:3: note: candidate: 'constexpr std::chars_format& std::operator|=(std::chars_format&, std::chars_format)'
  680 |   operator|=(chars_format& __lhs, chars_format __rhs) noexcept
      |   ^~~~~~~~
/usr/include/c++/10/charconv:680:28: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::chars_format&'
  680 |   operator|=(chars_format& __lhs, chars_format __rhs) noexcept
      |              ~~~~~~~~~~~~~~^~~~~
keys.cpp: In function 'std::vector<int> find_reachable(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
keys.cpp:89:4: error: expected ',' or ';' before 'for'
   89 |    for(int i = 0; i < n; i++){
      |    ^~~
keys.cpp:89:19: error: 'i' was not declared in this scope; did you mean 'it'?
   89 |    for(int i = 0; i < n; i++){
      |                   ^
      |                   it