Submission #1266478

#TimeUsernameProblemLanguageResultExecution timeMemory
1266478abdelhakimPermutation Game (APIO25_permgame)C++20
6 / 100
1 ms328 KiB
#include "permgame.h" #include <vector> #include <utility> #include <bits/stdc++.h> #define dbg(x) cerr << #x << ' ' << x << endl; #define ll long long #define inf (ll) 1e17 using namespace std; // vector<int> t={ind[i],i}; // int j = Bob(t); // std::swap(p[t[u[j]]], p[t[v[j]]]); vector<bool> vis; void dfs(ll node, vector<int>& g, vector<int>& p) { if(vis[node]) return; g.push_back(node); vis[node]=true; dfs(p[node],g,p); } int Alice(int m, int e, std::vector<int> u, std::vector<int> v, int n, std::vector<int> p) { vector<vector<ll>> adj(m); vis.assign(n,0); ll curans=0; for (int i=0;i<n;i++) { curans+=p[i]==i; } for (int i=0;i<e;i++) { adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } for (int i=0;i<m;i++) { if(adj[i].size() > 2) { return curans; } } for (int i=0;i<n;i++) { if(p[i]!=i && !vis[i]) { vector<int> g; for (int j=i;1;j=p[j]) { g.push_back(j); if(p[j]==i) { break; } } if(g.size()%2) { curans++; while(g.size()>1) { vector<int> t={g[0],g[1],g[2]}; int j = Bob(t); std::swap(p[t[u[j]]], p[t[v[j]]]); if(abs(v[j]-u[j])==1) { break; } g.erase(g.begin()); g.erase(g.begin()); } } } } return curans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...