#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;
    vector<int> ord;
    rep(i,0,m-1) {
        if(g[i].size()==1)rt=i;
        if(g[i].size() > 2) return cnt;
    }
    ord.pb(rt);
    int par = -1;
    rep(i,1,m-1) {
        for(int&v : g[rt]) {
            if(v==par)continue;
            par=rt;
            ord.pb(v);
            rt = v;
        }
    }
    while(1){
        vector<bool> mk(n,0);
        vector<int> t(m);
        int j = 0;
        rep(i,0,n-1) {
            if(mk[i] || p[i] == i || j >= m) continue;
            int st = p[i];
            while (j<m && !mk[st]){
                t[ord[j]] = st;
                j++;
                mk[st] = 1;
                st = p[st];
            }
        }
        if(j < m) break;
        int k = Bob(t);
        swap(p[t[u[k]]], p[t[v[k]]]);
    }
    cnt = 0;
    rep(i,0,n-1) if (p[i]==i) cnt++;
    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... |