제출 #1234933

#제출 시각아이디문제언어결과실행 시간메모리
1234933HanksburgerPermutation Game (APIO25_permgame)C++20
24 / 100
1 ms328 KiB
#include "permgame.h"
#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > perm;
vector<int> adj[405];
int ans;
void computePerm(vector<int> P)
{
    int visited[405]={};
    ans=0;
    perm.clear();
    for (int i=0; i<P.size(); i++)
    {
        if (visited[i])
            continue;
        vector<int> tmp;
        int cur=i;
        while (!visited[cur])
        {
            tmp.push_back(cur);
            visited[cur]=1;
            cur=P[cur];
        }
        if (tmp.size()==1)
            ans++;
        else
            perm.push_back(tmp);
    }
}
int Alice(int M, int E, vector<int> U, vector<int> V, int N, vector<int> P)
{
    computePerm(P);
    while (1)
    {
        int updated=0;
        for (int i=0; i<perm.size(); i++)
        {
            if (perm[i].size()&1)
            {
                updated=1;
                vector<int> tmp;
                tmp.push_back(perm[i][0]);
                tmp.push_back(perm[i][1]);
                tmp.push_back(perm[i][2]);
                int edge=Bob(tmp);
                swap(P[tmp[U[edge]]], P[tmp[V[edge]]]);
                computePerm(P);
                break;
            }
        }
        if (!updated)
            break;
    }
    return ans;
}
#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...