Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
34338 武云帆 【S】T2 C++ 通过 100 122 MS 9912 KB 1173 2024-11-06 08:56:00

Tests(10/10):


#include<bits/stdc++.h> using namespace std; const int N=100010; int a[N],b[N]; map<int,int> m; int n,cnt=0; vector<int> v[N]; bool vis[N]; void dfs(int u){ vis[u]=1; for(int i:v[u]){ if(!vis[i]){ dfs(i); } } } int main(){ cin>>n; int w=0; for(int i=1;i<=n;i++){ cin>>a[i]; m[a[i]]++; w^=a[i]; } for(int i=1;i<=n;i++){ cin>>b[i]; m[b[i]]--; } m[w]++; for(int i=1;i<=n;i++){ if(m[b[i]]<0){ cout<<-1<<endl; return 0; } } for(auto &p:m){ p.second=++cnt; } int z=0; for(int i=1;i<=n;i++){ if(b[i]!=a[i]){ v[m[b[i]]].push_back(m[a[i]]); v[m[a[i]]].push_back(m[b[i]]); ++z; } } int ans=0; for(auto p:m){ //cout<<p.second<<" "<<v[p.second].size()<<endl; if(!vis[p.second]&&!v[p.second].empty()){ dfs(p.second); ans++; } } if(!v[m[w]].empty()) --ans; //cout<<z<<" "<<ans<<endl; printf("%d\n",z+ans); return 0; }


测评信息: