Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
34331 swzzzz 【S】T2 C++ 通过 100 125 MS 9732 KB 1275 2024-11-06 08:14:28

Tests(10/10):


#include<bits/stdc++.h> using namespace std; #define N 100005 int n,m; int a[N],b[N]; map<int,int>mp; int deg[N]; vector<int>to[N]; bool vis[N]; int cnt; void dfs(int x){ vis[x]=1; for(int i:to[x]) if(!vis[i]) dfs(i); } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; if(mp.find(a[i])==mp.end()) mp.insert(make_pair(a[i],mp.size()+1)); deg[mp[a[i]]]++; a[0]^=a[i]; } for(int i=1;i<=n;i++){ cin>>b[i]; if(mp.find(b[i])==mp.end()) mp.insert(make_pair(b[i],mp.size()+1)); deg[mp[b[i]]]--; b[0]^=b[i]; } if(mp.find(a[0])==mp.end()) mp.insert(make_pair(a[0],mp.size()+1)); deg[mp[a[0]]]++; for(pair<int,int>i:mp){ if(deg[i.second]<0){ cout<<-1; return 0; } } for(int i=1;i<=n;i++){ if(a[i]!=b[i]){ to[mp[a[i]]].push_back(mp[b[i]]); to[mp[b[i]]].push_back(mp[a[i]]); m++; } } for(int i=1;i<=mp.size();i++){ if(!vis[i] && !to[i].empty()){ cnt++; dfs(i); } } if(!to[mp[a[0]]].empty()){ cout<<m+cnt-1; }else{ cout<<m+cnt; } return 0; }


测评信息: