#include "permgame.h"
#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i = a; i <= b; ++i)
#define pb push_back
#define fi first
#define se second
#define pii pair<int,int>
int Alice(int m, int e, std::vector<int> u, std::vector<int> v, int n, std::vector<int> p) {
    int cnt = 0;
    rep(i,0,n-1) if (p[i]==i) cnt++;
    vector<vector<int>> g(m);
    rep(i,0,e-1) g[u[i]].pb(v[i]), g[v[i]].pb(u[i]);
    int rt;
    rep(i,0,m-1) {
        if(g[i].size()==1)rt=i;
        if(g[i].size() > 2) return cnt;
    }
    while(1){
        pii cur = {-1,-1};
        vector<bool> mk(n+1,0);
        rep(i,0,n-1) {
            if(mk[i]) continue;
            mk[i] = 1;
            int st = p[i],sz = 1;
            while (!mk[st]){
                sz++;
                st = p[st];
            }
            cur = max(cur,{sz,i});
        }
        if(cur.fi < m) break;
        cnt++;
        vector<int> t(m);
        t[rt] = (cur.se);
        int par = -1, tmp = rt;
        rep(i,1,m-1) {
            for(int&v : g[tmp]) {
                if(v==par)continue;
                par=tmp;
                tmp=v;
                cur.se = p[cur.se];
                t[tmp] = cur.se;
                tmp = v;
            }
        }
        int j = Bob(t);
        swap(p[t[u[j]]], p[t[v[j]]]);
    }
    return cnt;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |