#include "Alicelib.h"
#include <cassert>
#include <cstdio>
#include <bits/stdc++.h>
using namespace std;
void Alice(int N, int M, int A[], int B[]) {
    int cnt = 0;
    InitG(3 * N, M + N * N + N * (N + 3) / 2);
    
    
    for (int i = 0; i < M; ++i) {
        MakeG(cnt++, A[i], B[i]);
    }
    
    for (int i = N; i < 2 * N; ++i) {
        for (int j = 0; j < N; ++j) {
            MakeG(cnt++, i, j);
        }
    }
    
    for (int i = 2 * N; i < 3 * N; ++i) {
        int tmp=i-2*N;
        for (int j = N; j <= N+tmp; ++j) {
            MakeG(cnt++, i, j);
        }
        MakeG(cnt++, i, i - 2 * N);
    }
}
#include "Boblib.h"
#include <cassert>
#include <cstdio>
#include <bits/stdc++.h>
using namespace std;
void Bob(int V, int U, int C[], int D[]) {
    int n = V / 3, m = U - n * n - n * (n + 3) / 2;
    vector<set<int>> arr(V);
    vector<bool> spc(V, 0);
    multiset<set<int>> s;
    map<int, int> mp;
    
    InitMap(n, m);
    
    for (int i = 0; i < U; ++i) {
        arr[C[i]].insert(D[i]);
    }
    for (int i = 0; i < V; ++i) {
        if (arr[i].size() == n)
            s.insert(arr[i]);
    }
    for (int i = 0; i < V; ++i) {
        if (arr[i].size() == n && s.count(arr[i]) == n)
            spc[i] = 1;
    }
    
    for (int i = 0; i < V; ++i) {
        if (!spc[i]) {
            int cnt = 0, x = -1;
            for (auto &elt: arr[i]) {
                if (spc[elt])
                    cnt++;
                else
                    x = elt;
            }
            if (cnt > 0) {
                mp[x] = cnt - 1;
                spc[i] = 1;
            }
        }
    }
    
    
    for (int i = 0; i < U; ++i) {
        if (!spc[C[i]]) {
            MakeMap(mp[C[i]], mp[D[i]]);
        }
    }
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |