#include "Alicelib.h"
#include <cassert>
#include <cstdio>
#include <bits/stdc++.h>
using namespace std;
static int cnt;
void Alice(int N, int M, int A[], int B[]) {
cnt = 0;
InitG(2 * N, M + (N * (N + 1) / 2));
//1
for (int i = 0; i < M; i++) {
if (A[i] < B[i])
MakeG(cnt++, A[i], B[i]);
else
MakeG(cnt++, B[i], A[i]);
}
//2
for (int i = N, tmp = 0; i < 2 * N; tmp++, i++) {
//spc
for (int j = N; j < i; j++) {
MakeG(cnt++, i, j);
}
MakeG(cnt++, i, tmp);
}
}
#include "Boblib.h"
#include <cassert>
#include <cstdio>
#include <bits/stdc++.h>
using namespace std;
static int n;
static int m;
static vector<set<int>> arr;
static vector<bool> spc;
static vector<int> occ;
static map<int, int> mp;
void Bob(int V, int U, int C[], int D[]) {
n = V / 2;
m = U - (n * (n + 1) / 2);
arr.resize(V);
spc.assign(V, false);
occ.assign(V, 0);
mp.clear();
InitMap(n, m);
//arr
for (int i = 0; i < U; i++) {
arr[C[i]].insert(D[i]);
occ[D[i]]++;
}
//spc n°1
for (int i = 0; i < V; ++i) {
if (arr[i].size() == 1) {
for (auto &elt: arr[i]) {
if (occ[elt] == 1) {
spc[i] = true;
}
}
}
}
//spc n°2 -> n°N
for (int i = 0; i < V; ++i) {
for (auto &elt: arr[i]) {
if (spc[elt]) {
spc[i] = true;
}
}
}
//spc 2
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;
}
mp[x] = cnt;
}
}
//ans
for (int i = 0; i < U; i++) {
if (mp.count(C[i]) && mp.count(D[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... |