#include <bits/stdc++.h>
using namespace std;
void dfs(int node, int graph[], int &sz, bool vis[])
{
if(vis[node])
return;
vis[node]=1;
sz++;
dfs(graph[node], graph, sz, vis);
}
int main()
{
int n;
cin>>n;
map<string, int>str_to_int;
int graph[n];
int index=0;
string aa, bb;
for(int i=0; i<n; i++)
{
cin>>aa>>bb;
if(str_to_int.find(aa)==str_to_int.end())
{
str_to_int[aa]=index;
index++;
}
if(str_to_int.find(bb)==str_to_int.end())
{
str_to_int[bb]=index;
index++;
}
graph[str_to_int[aa]]=str_to_int[bb];
}
if(n%2==1)
{
cout<<-1;
return 0;
}
bool vis[n];
memset(vis, 0, sizeof(vis));
long long int sol=0;
int sz=1;
for(int i=0; i<n; i++)
{
if(!vis[i])
{
sz=0;
dfs(i, graph, sz, vis);
sol+=(sz/2);
if(sz%2==1)
sol++;
}
}
cout<<sol;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |