Submission #1216939

#TimeUsernameProblemLanguageResultExecution timeMemory
1216939friendiksLove Polygon (BOI18_polygon)C++20
29 / 100
188 ms16836 KiB
#ifndef LOCAL #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #pragma GCC diagnostic ignored "-Wpedantic" #endif #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; auto seed = chrono::high_resolution_clock::now().time_since_epoch().count(); mt19937 rnd(52); template<typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; template<typename T, typename V> using table = gp_hash_table<T, V>; using i128 = __int128; using ll = long long; using ld = long double; using uint = unsigned int; using ull = unsigned long long; const ll INF = 2e18; const int inf = 1e9; const int maxn = 1e5 + 7; const int MOD = 1e9 + 7; const ld pi = acos(-1); const int P = 5167; const int L = 26; const ld EPS = 1e-7; template<typename T, typename V> void fill(T &container, V value) { for (auto &c : container) c = value; } vector<int> g[maxn]; int dp[maxn]; void dfs(int v) { for (auto to : g[v]) { dfs(to); dp[v] = max(dp[v], 1 - dp[to]); } } void solve() { int n; cin >> n; if (n % 2 == 1) { cout << -1; return; } map<string, int> mp; int curr = 1; vector<int> roots; for (int i = 0; i < n; ++i) { string s, t; cin >> s >> t; if (mp[s] == 0) mp[s] = curr++; if (mp[t] == 0) mp[t] = curr++; if (s == t) roots.push_back(mp[s]); else g[mp[t]].push_back(mp[s]); } for (auto root : roots) { dfs(root); } int ans = n; for (auto c : dp) { ans -= c; } cout << ans; } signed main() { #ifdef LOCAL freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif ios_base::sync_with_stdio(false); cin.tie(nullptr); cout << fixed << setprecision(4); int t = 1; //cin >> t; while (t--) solve(); //stress(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...