#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));
//1
for (int i = 0; i < M; i++) {
MakeG(cnt, A[i], B[i]);
cnt++;// M
}
//2
for (int i = N; i < 2 * N; i++) {
for (int j = 0; j < N; j++) {
MakeG(cnt, i, j);
cnt++;// M + N*N
}
}
//3
for (int i = 2 * N,tmp=0; i < 3 * N;tmp++, i++) {
//spc
for (int j = N; j <= N + tmp; j++) {
MakeG(cnt, i, j);
cnt++;
}
//e
MakeG(cnt, i, tmp);
cnt++;
}
}
#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;
int m = U - (n * n) - (n * (n + 3) / 2);
vector<set<int>> arr(V);
vector<bool> spc(V, false);
multiset<set<int>> s;
map<int, int> mp;
InitMap(n, m);
//arr
for (int i = 0; i < U; i++) {
arr[C[i]].insert(D[i]);
}
//s
for (int i = 0; i < V; i++) {
if (arr[i].size() == n)
s.insert(arr[i]);
}
//spc1
for (int i = 0; i < V; i++) {
if (arr[i].size() == n && s.count(arr[i]) > 1)
spc[i] = true;
}
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] = true;
}
}
}
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... |