Submission #1266308

#TimeUsernameProblemLanguageResultExecution timeMemory
1266308abdelhakimPermutation Game (APIO25_permgame)C++20
22 / 100
10 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]]]);


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);
    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)
    {
        vector<int> t;
        vector<bool> already(n);
        for (int i=0;i<n;i++)
        {
            if(p[i]!=i && t.size()<m && !already[i])
            {
                t.push_back(i);
                already[i]=true;
                i=p[i]-1;
            }
        }
        if(t.size() < m) break;
        int j = Bob(t);
        std::swap(p[t[u[j]]], p[t[v[j]]]);
    }
    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...