# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
939306 | Pring | Stray Cat (JOI20_stray) | C++14 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "Anthony.h"
using namespace std;
const string dbmc = "\033[1;38;2;57;197;187m", dbrs = "\033[0m";
#define fs first
#define sc second
#define mp make_pair
#define FOR(i, j, k) for (int i = j, Z = k; i < Z; i++)
typedef pair<int, int> pii;
namespace {
const int MXN = 20005;
int n, m, A, B;
vector<int> eu, ev;
vector<int> eid[MXN];
int d[MXN];
vector<int> tag;
namespace NSA {
void BSH(int sr) {
fill(d, d + n, -1);
queue<pii> q;
q.push(mp(0, sr));
while (q.size()) {
auto [dep, id] = q.front();
q.pop();
if (d[id] != -1) continue;
d[id] = dep;
for (auto &e : eid[id]) {
int i = eu[e] ^ ev[e] ^ id;
if (d[i] != -1) continue;
q.push(mp(dep + 1, i));
}
}
}
vector<int> Mark() {
BSH(0);
tag.resize(m);
FOR(i, 0, m) {
if (d[eu[i]] == d[ev[i]]) tag[i] = d[eu[i]] % 3;
else tag[i] = min(d[eu[i]], d[ev[i]]) % 3;
}
return tag;
}
}
namespace NSB {
vector<int> Mark() {
return vector<int>();
}
}
}
vector<int> Mark(int _n, int _m, int _a, int _b, vector<int> _eu, vector<int> _ev) {
n = _n;
m = _m;
A = _a;
B = _b;
eu = _eu;
ev = _ev;
FOR(i, 0, m) {
eid[eu[i]].push_back(i);
eid[ev[i]].push_back(i);
}
return (A >= 3 ? NSA::Mark() : NSB::Mark());
}
#include <bits/stdc++.h>
#include "Anthony.h"
using namespace std;
const string dbmc = "\033[1;38;2;57;197;187m", dbrs = "\033[0m";
#define fs first
#define sc second
#define mp make_pair
#define FOR(i, j, k) for (int i = j, Z = k; i < Z; i++)
typedef pair<int, int> pii;
namespace {
const int MXN = 20005;
int n, m, A, B;
vector<int> eu, ev;
vector<int> eid[MXN];
int d[MXN];
vector<int> tag;
namespace NSA {
void BSH(int sr) {
fill(d, d + n, -1);
queue<pii> q;
q.push(mp(0, sr));
while (q.size()) {
auto [dep, id] = q.front();
q.pop();
if (d[id] != -1) continue;
d[id] = dep;
for (auto &e : eid[id]) {
int i = eu[e] ^ ev[e] ^ id;
if (d[i] != -1) continue;
q.push(mp(dep + 1, i));
}
}
}
vector<int> Mark() {
BSH(0);
tag.resize(m);
FOR(i, 0, m) {
if (d[eu[i]] == d[ev[i]]) tag[i] = d[eu[i]] % 3;
else tag[i] = min(d[eu[i]], d[ev[i]]) % 3;
}
return tag;
}
}
namespace NSB {
vector<int> Mark() {
return vector<int>();
}
}
}
vector<int> Mark(int _n, int _m, int _a, int _b, vector<int> _eu, vector<int> _ev) {
n = _n;
m = _m;
A = _a;
B = _b;
eu = _eu;
ev = _ev;
FOR(i, 0, m) {
eid[eu[i]].push_back(i);
eid[ev[i]].push_back(i);
}
return (A >= 3 ? NSA::Mark() : NSB::Mark());
}