Submission #1207042

#TimeUsernameProblemLanguageResultExecution timeMemory
1207042LudisseyPermutation Game (APIO25_permgame)C++20
6 / 100
0 ms332 KiB
#include "permgame.h" #include <bits/stdc++.h> #define sz(a) (int)a.size() #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() using namespace std; int Alice(int m, int e, std::vector<int> u, std::vector<int> v, int n, std::vector<int> p) { vector<vector<int>> neigh(m); for (int i = 0; i < e; i++) { neigh[u[i]].push_back(v[i]); neigh[v[i]].push_back(u[i]); } int sc=0; for (int i = 0; i < sz(p); i++) { sc+=(p[i]==i); } vector<int> cnt(m); for (int i = 0; i < e; i++) { cnt[u[i]]++; cnt[v[i]]++; } int st=0; for (int i = 0; i < m; i++) { if(cnt[i]==1) {st=i; break; } } vector<int> tree; int pr=-1; while(sz(tree)<m){ tree.push_back(st); bool br=false; for (auto ne : neigh[st]) { if(pr==ne) continue; pr=st; st=ne; br=true; break; } if(!br) break; } if(sz(tree)!=m) return sc; bool b=true; while(b){ b=false; for (int i = 0; i < n; i++) { int x=i; vector<int> visited(n,0); vector<int> q; while(!visited[x]&&sz(q)<m){ visited[x]=true; q.push_back(x); x=p[x]; } if(sz(q)==m){ vector<int> t(m); for (int i = 0; i < m; i++) { t[tree[i]]=q[i]; } int j=Bob(t); swap(p[t[u[j]]],p[t[v[j]]]); b=true; break; } } } sc=0; for (int i = 0; i < n; i++) sc+=(p[i]==i); return sc; }
#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...