답안 #1032871

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1032871 2024-07-24T10:11:40 Z touristhacker Love Polygon (BOI18_polygon) C++14
0 / 100
193 ms 14212 KB
#include <bits/stdc++.h>
 
using namespace std;
 
int main(){
	cin.tie(0); ios::sync_with_stdio(0);
	int n, c = 0, sol = 0;
	cin >> n;
	if(n&1){
		cout << "-1\n";
		exit(0);
	}
	vector<int> love(n), deg(n), s, active(n, 1);
	map<string,int> dns;
	set<int> single;
	for(int i = 0; i < n; i++){
		single.insert(i);
		string a, b;
		cin >> a >> b;
		if(!dns.count(a)) dns[a] = c++;
		if(!dns.count(b)) dns[b] = c++;
		love[dns[a]] = dns[b];
		deg[dns[b]]++;
	}
	for(int i = 0; i < n; i++) if(deg[i] == 0) s.push_back(i);
	int i = 0;
	for(int j = 0; j < n; j++){
		if(active[j] && love[love[j]] == j && love[j] != j){
			active[j] = 0, active[love[j]] = 0;
			single.erase(j), single.erase(love[j]);
			i += 2;
		}
	}
	for(; i < n; i++){
		if(s.empty()) s.push_back(*single.begin());
		int u = s.back();
		s.pop_back();
		active[u] = 0;
		single.erase(u);
		sol++;
		if(active[love[u]]){
			i++;
			active[love[u]] = 0;
			single.erase(love[u]);
			if(love[love[u]] == u) sol--, cout << "WHAT\n";
		}
	}
	cout << sol << "\n";
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Incorrect 0 ms 348 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 193 ms 14212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -