社区讨论
E被卡常求助
学术版参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mlwl3yh5
- 此快照首次捕获于
- 2026/02/22 01:20 2 周前
- 此快照最后确认于
- 2026/02/24 14:10 2 周前
rt,cf2192e(round 1081)
code:
CPP#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e6 + 10;
int a[N], b[N], cnt[N], use[N];
vector<pair<int, int>>e[N];
pair<int, int> fangxiang[N];
vector<int>ans;
void dfs(int u){
for (auto [v, id] : e[u]){
if (use[id])continue;
use[id] = 1;
fangxiang[id] = {u, v};
dfs(v);
}
}
void run(){
int n;
cin >> n;
for (int i = 1; i <= n; i++)cin >> a[i];
for (int i = 1; i <= n; i++)cin >> b[i];
// for (int i = 1; i <= 5; i++)
// cout << cnt[i] << " \n"[i == 5];
for (int i = 1; i <= n; i++){
cnt[a[i]]++;
}
// for (int i = 1; i <= 5; i++)
// cout << cnt[i] << " \n"[i == 5];
for (int i = 1; i <= n; i++){
cnt[b[i]]++;
}
// for (int i = 1; i <= 5; i++)
// cout << cnt[i] << " \n"[i == 5];
for (int i = 1; i <= n; i++)
if (cnt[i] & 1){
cout << -1 << endl;
for (int j = 1; j <= n; j++)
cnt[j] = 0;
return;
}
for (int i = 1; i <= n; i++){
int u = a[i], v = b[i];
e[u].push_back({v, i});
e[v].push_back({u, i});
}
for (int i = 1; i <= n; i++)
dfs(i);
for (int i = 1; i <= n; i++)
if (fangxiang[i].first != a[i])
ans.push_back(i);
cout << ans.size() << endl;
for (int i : ans)cout << i << ' ';
cout << endl;
//init
for (int i = 1; i <= n; i++){
e[i].clear();
use[i] = cnt[i] = 0;
}
ans.clear();
}
int main(){
// freopen(".in", "r", stdin);
// freopen(".out", "w", stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t = 1;
cin >> t;
while (t--)run();
return 0;
}
Time limit exceeded on pretest 12
回复
共 1 条回复,欢迎继续交流。
正在加载回复...