제출 #1266459

#제출 시각아이디문제언어결과실행 시간메모리
1266459abdelhakimPermutation 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, ll first) { if(vis[node]) return; vis[p[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(true) { bool drnaha=false; bool taken[n]; memset(taken,0,sizeof(taken)); for (int i=0;i<n;i++) { if(!taken[i]) { vector<int> g; ll c=1; for(int j=i;p[j]!=i;j=p[j]) {g.push_back(j), taken[p[j]] = 1;c++;} if(c%2 && c>1) { drnaha=true; curans++; vector<int> t={g[0],g[1],g[2]}; int j = Bob(t); std::swap(p[t[u[j]]], p[t[v[j]]]); break; } } } if(!drnaha)break; } 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...