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