Submission #1266429

#TimeUsernameProblemLanguageResultExecution timeMemory
1266429abdelhakimPermutation Game (APIO25_permgame)C++20
30 / 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, ll first) { if(vis[node]) return; vis[node]=true; g.push_back(node); dfs(p[node],g,p,first); } 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; } } while(m == 3) { bool taken[n]; memset(taken,0,sizeof(taken)); bool gg = 1; for(int i=0;i<n;i++) if(!taken[i]) { int c = 1; for(int j=i;p[j]!=i;j=p[j]) c++, taken[p[j]] = 1; if(c > 2 && (c & 1)) { vector<int> qry = {i, p[i], p[p[i]]}; int t = Bob(qry); swap(p[qry[u[t]]],p[qry[v[t]]]); gg = 0; break; } } if(gg) { int ans = 0; for(int i=0;i<n;i++) ans += (i == p[i]); return ans; } } ll cnt=0; for (int i=0;i<n;i++) { cnt+=p[i]==i; } return cnt; }
#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...