Submission #1299079

#TimeUsernameProblemLanguageResultExecution timeMemory
1299079nguyenkhangninh99Love Polygon (BOI18_polygon)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; #define int long long const int maxn = 1e5 + 5; vector<int> rev[maxn]; int par[maxn], deg[maxn], vis[maxn], match[maxn], ans; void dfs(int u){ vis[u] = 1; for(int v: rev[u]){ if(vis[v] || v == u) continue; dfs(v); if(!match[v] && !match[u]){ match[u] = match[v] = 1; ans++; } } } void dfs2(int u){ vis[u] = 1; for(int v: rev[u]){ if(vis[v] || v == u || deg[v] > 0) continue; dfs2(v); if(!match[v] && !match[u]){ match[u] = match[v] = 1; ans++; } } } void dfscycle(int u){ vis[u] = 1; for(int v: rev[u]){ if(deg[v] == 0) continue; if(!vis[v]) dfscycle(v); if(!match[v] && !match[u]){ match[u] = match[v] = 1; ans++; } } } signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; if(n & 1){ cout << -1; return 0; } map<string, int> mp; int id = 1; for(int i = 1; i <= n; i++){ string s, t; cin >> s >> t; if(!mp.count(s)) mp[s] = id++; if(!mp.count(t)) mp[t] = id++; int u = mp[s], v = mp[t]; par[u] = v; rev[v].push_back(u); deg[v]++; } queue<int> q; for(int i = 1; i <= n; i++) if(!deg[i]) q.push(i); while(q.size()){ int u = q.front(); q.pop(); int v = par[u]; deg[v]--; if(!deg[v]) q.push(v); } for(int i = 1; i <= n; i++){ if(par[par[i]] == i){ if(par[i] > i){ match[i] = match[par[i]] = 1; vis[i] = vis[par[i]] = 1 dfs(i); dfs(par[i]); } }else if(par[i] != i && deg[i]) dfs2(i); } for(int i = 1; i <= n; i++) if(par[i] == i) dfs(i); memset(vis, 0, sizeof(vis)); for(int i = 1; i <= n; i++) if(deg[i] && !vis[i] && match[i]) dfscycle(i); for(int i = 1; i <= n; i++) if(deg[i] && !vis[i]) dfscycle(i); for(int i = 1; i <= n; i++) ans += !match[i]; cout << ans; }

Compilation message (stderr)

polygon.cpp: In function 'int main()':
polygon.cpp:81:41: error: expected ';' before 'dfs'
   81 |                 vis[i] = vis[par[i]] = 1
      |                                         ^
      |                                         ;
   82 |                 dfs(i);
      |                 ~~~