Submission #1129485

#TimeUsernameProblemLanguageResultExecution timeMemory
1129485stdfloatLove Polygon (BOI18_polygon)C++20
0 / 100
133 ms8536 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

#define sz(v)	(int)(v).size()

int main() {
	ios::sync_with_stdio(false); cin.tie(nullptr);

	int n;
	cin >> n;

	if (n & 1) return cout << -1, 0;

	vector<int> pr(n);
	map<string, int> m;
	for (int i = 0; i < n; i++) {
		string s, t;
		cin >> s >> t;

		if (m.find(s) == m.end()) m[s] = (int)m.size();
		if (m.find(t) == m.end()) m[t] = (int)m.size();
	
		pr[m[s]] = m[t];
	}

	int cnt = 0;
	vector<bool> vis(n);
	for (int i = 0; i < n; i++) {
		if (vis[i]) continue;
	
		int x = i, cnt1 = 0;
		while (!vis[x]) {
			cnt1++;
			vis[x] = true;
			x = pr[x];
		}

		assert(x == i);

		cnt += (cnt1 & 1);
	}

	assert(!(cnt & 1));

	cout << (n >> 1) + (cnt >> 1);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...