Submission #1190755

#TimeUsernameProblemLanguageResultExecution timeMemory
1190755Abdalaziz_AlshamiLove Polygon (BOI18_polygon)C++20
0 / 100
147 ms8992 KiB
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int a[N];
int vis[N];
int dfs(int x,int s){
	vis[x]=1;
	if(vis[a[x]]) return (s+1)/2;
	return dfs(a[x],s+1);
}
signed main(){
	ios::sync_with_stdio(0); cin.tie(0);
	int n; cin>>n;
	map<string,int>m;
	int d=1;
	for(int i=0;i<n;i++){
		string u,v; cin>>u>>v; 
		if(!m[u]) m[u]=d++;
		if(!m[v]) m[v]=d++;
		a[m[u]]=m[v];
	}
	int ans=0;
	for(int i=1;i<=n;i++){
		if(a[i]==i) { ans++; continue; }
		if(!vis[i]) ans+=dfs(i,1);
	}
	if(n%2) cout<<-1;
	else cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...