제출 #292683

#제출 시각아이디문제언어결과실행 시간메모리
292683Haunted_CppSimurgh (IOI17_simurgh)C++17
컴파일 에러
0 ms0 KiB
#include "simurgh.h" #include <bits/stdc++.h> using namespace std; vector<vector<pair<int, int>>> g(MAX_N); bitset<MAX_N> vis; vector<int> span, par, s, best_way, u, v; int n; void reset() { for (int i = 0; i < n; i++) { par[i] = i; s[i] = 1; } } int root(int x) { if (x == par[x]) return x; return par[x] = root(par[x]); } void join(int a, int b) { a = root(a); b = root(b); if (a == b) return; if (s[a] < s[b]) swap(a, b); par[b] = a; s[a] += s[b]; } bool is(int a, int b) { return root(a) == root(b); } bool works() { for (auto to : span) { const int st = u[to]; const int et = v[to]; if (is(st, et)) return false; join(st, et); } return true; } const int MAX_N = 240 + 5; void get_any(int node) { vis[node] = 1; for (auto [nxt, to] : g[node]) { if (!vis[nxt]) { vis[nxt] = 1; span.emplace_back(to); get_any(nxt); } } } vector<int> find_roads(int n, vector<int> u, vector<int> v) { ::n = n; ::u = u; ::v = v; const int m = v.size(); const int t = n - 1; par = s = vector<int>(n); for (int i = 0; i < m; i++) { const int st = u[i]; const int et = v[i]; g[st].emplace_back(et, i); g[et].emplace_back(st, i); } get_any(0); int score = count_common_roads(span); if (score == t) { return span; } for (auto &edge : span) { int starting_edge = edge; bool swap = false; for (int i = 0; i < m; i++) { reset(); edge = i; if(!works()) { continue; } int nxt_score = count_common_roads(span); if (nxt_score > score) { score = nxt_score; assert(edge == i); swap = true; break; } } if (score == t) { return span; } if (!swap) { edge = starting_edge; } } return span; }

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

simurgh.cpp:6:34: error: 'MAX_N' was not declared in this scope
    6 | vector<vector<pair<int, int>>> g(MAX_N);
      |                                  ^~~~~
simurgh.cpp:7:8: error: 'MAX_N' was not declared in this scope
    7 | bitset<MAX_N> vis;
      |        ^~~~~
simurgh.cpp:7:13: error: template argument 1 is invalid
    7 | bitset<MAX_N> vis;
      |             ^
simurgh.cpp: In function 'void get_any(int)':
simurgh.cpp:52:11: error: invalid types 'int[int]' for array subscript
   52 |   vis[node] = 1;
      |           ^
simurgh.cpp:54:17: error: invalid types 'int[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
   54 |     if (!vis[nxt]) {
      |                 ^
simurgh.cpp:55:14: error: invalid types 'int[std::tuple_element<0, std::pair<int, int> >::type {aka int}]' for array subscript
   55 |       vis[nxt] = 1;
      |              ^