제출 #552448

#제출 시각아이디문제언어결과실행 시간메모리
552448Killer2501Amusement Park (JOI17_amusement_park)C++14
컴파일 에러
0 ms0 KiB
#include "Joi.h" #include <bits/stdc++.h> #define ll long long #define ld long double #define ull unsigned long long #define pb push_back #define pll pair<int, pii> #define pii pair<int, int> #define fi first #define se second using namespace std; const int N = 2e5+2; const int M = 60; const int mod = 1e9+7; const ll base = 1e6; const ll inf = 1e9; int n, m, b[N], a[N], k, d[N], cnt, par[N], f[N]; ll ans; vector<int> adj[N]; bool vis[N]; set<pii> leaf; set<int> st[N]; void dfs(int u) { vis[u] = true; if(cnt < M) { d[u] = cnt++; } else { auto it = leaf.begin(); if(u != 0 && d[par[u]] == (*it).se)++it; int v = (*it).se; d[u] = v; leaf.erase(it); for(int x: st[v]) { leaf.erase({st[x].size(), x}); st[x].erase(v); leaf.insert({st[x].size(), x}); } st[v].clear(); } leaf.insert({0, d[u]}); if(u != 0) { int v = d[par[u]]; leaf.erase({st[d[u]].size(), d[u]}); leaf.erase({st[v].size(), v}); st[v].insert(d[u]); st[d[u]].insert(v); leaf.insert({st[d[u]].size(), d[u]}); leaf.insert({st[v].size(), v}); } //cout << u <<" "<<d[u]<<'\n'; for(int v: adj[u]) { if(vis[v])continue; par[v] = u; dfs(v); } } void Joi(int n, int m, int A[], int B[], ll x, int T) { for(int i = 0; i < n; i ++) { st[i].clear(); adj[i].clear(); } leaf.clear(); cnt = 0; for(int i = 0; i < m; i ++) { adj[A[i]].pb(B[i]); adj[B[i]].pb(A[i]); } fill_n(d, n, -1); fill_n(par, n, -1); fill_n(vis, n, 0); dfs(0); for(int i = 0; i < n; i ++) MessageBoard(i, (x>>d[i]&1)); }
#include "Ioi.h" #include <bits/stdc++.h> #define ll long long #define ld long double #define ull unsigned long long #define pb push_back #define pll pair<int, pii> #define pii pair<int, int> #define fi first #define se second using namespace std; const int N = 2e5+2; const int M = 60; const int mod = 1e9+7; const ll base = 1e6; const ll inf = 1e9; int n, m, b[N], a[N], k, d[N], cnt, par[N], f[N]; ll ans; vector<int> adj[N]; bool vis[N]; set<pii> leaf; set<int> st[N]; void dfs(int u) { vis[u] = true; if(cnt < M) { d[u] = cnt++; } else { auto it = leaf.begin(); if(u != 0 && d[par[u]] == (*it).se)++it; int v = (*it).se; d[u] = v; leaf.erase(it); for(int x: st[v]) { leaf.erase({st[x].size(), x}); st[x].erase(v); leaf.insert({st[x].size(), x}); } st[v].clear(); } leaf.insert({0, d[u]}); if(u != 0) { int v = d[par[u]]; leaf.erase({st[d[u]].size(), d[u]}); leaf.erase({st[v].size(), v}); st[v].insert(d[u]); st[d[u]].insert(v); leaf.insert({st[d[u]].size(), d[u]}); leaf.insert({st[v].size(), v}); } //cout << u <<" "<<d[u]<<'\n'; for(int v: adj[u]) { if(vis[v])continue; par[v] = u; dfs(v); } } map<pii, int> mp; int lst; void cal(int u) { //cout << u <<" "<<d[u]<<" "<<a[d[u]]<<'\n'; for(int v: adj[u]) { if(a[d[v]] == -1) { assert(mp[{lst, v}] > 0); lst = v; a[d[v]] = Move(v); cal(v); assert(mp[{lst, u}] > 0); lst = u; Move(u); } } } ll Ioi(int n, int m, int A[], int B[], int P, int V, int T) { for(int i = 0; i < n; i ++) { st[i].clear(); adj[i].clear(); } leaf.clear(); cnt = 0; mp.clear(); for(int i = 0; i < m; i ++) { adj[A[i]].pb(B[i]); adj[B[i]].pb(A[i]); mp[{A[i], B[i]}] = mp[{B[i], A[i]}] = 1; } fill_n(d, n, -1); fill_n(par, n, -1); fill_n(vis, n, 0); dfs(0); fill_n(a, M, -1); a[d[P]] = V; lst = P; cal(P); ll res = 0; for(int i = 0; i < M; i ++) { //cout << a[i] <<" "<<i<<'\n'; if(a[i]) res |= (1ll<<i); } return res; }

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

Ioi.cpp:74:36: error: macro "assert" passed 2 arguments, but takes just 1
   74 |             assert(mp[{lst, v}] > 0);
      |                                    ^
In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from Ioi.cpp:2:
/usr/include/assert.h:92: note: macro "assert" defined here
   92 | #  define assert(expr)       \
      | 
Ioi.cpp:78:36: error: macro "assert" passed 2 arguments, but takes just 1
   78 |             assert(mp[{lst, u}] > 0);
      |                                    ^
In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from Ioi.cpp:2:
/usr/include/assert.h:92: note: macro "assert" defined here
   92 | #  define assert(expr)       \
      | 
Ioi.cpp: In function 'void cal(int)':
Ioi.cpp:74:13: error: 'assert' was not declared in this scope
   74 |             assert(mp[{lst, v}] > 0);
      |             ^~~~~~
Ioi.cpp:3:1: note: 'assert' is defined in header '<cassert>'; did you forget to '#include <cassert>'?
    2 | #include <bits/stdc++.h>
  +++ |+#include <cassert>
    3 | #define ll long long