제출 #400812

#제출 시각아이디문제언어결과실행 시간메모리
40081212tqian길고양이 (JOI20_stray)C++17
15 / 100
70 ms17904 KiB
#include "Anthony.h" #include <bits/stdc++.h> using namespace std; #define f1r(i, a, b) for (int i = a; i < b; ++i) #define f0r(i, a) f1r(i, 0, a) #define each(t, a) for (auto& t : a) #define pb push_back #define eb emplace_back #define mp make_pair #define f first #define s second using vi = vector<int>; using pi = pair<int, int>; using vpi = vector<pi>; using ll = long long; // 0 -> 1 -> 2 vi Mark(int n, int m, int a, int b, vi U, vi V) { vector<vi> g(n); auto cp = [&](int u, int v) -> pi { if (u > v) swap(u, v); return mp(u, v); }; map<pi, int> conv; vpi ed; vi res(m); f0r(i, m) { int u = U[i]; int v = V[i]; conv[cp(u, v)] = i; g[u].pb(v); g[v].pb(u); ed.pb(cp(u, v)); } if (a >= 3) { // bfs work vi dist(n, -1); list<int> que; dist[0] = 0; que.pb(0); while (!que.empty()) { int u = que.front(); que.pop_front(); each(v, g[u]) { if (dist[v] != -1) continue; dist[v] = dist[u] + 1; que.push_back(v); } } each(e, ed) { int u = e.f; int v = e.s; int id = conv[cp(u, v)]; if (dist[u] == dist[v]) { res[id] = dist[u] % 3; } else { if (dist[u] > dist[v]) { swap(u, v); } res[id] = dist[u] % 3; } } } else { // do nothing for now } return res; }
#include "Catherine.h" #include <bits/stdc++.h> using namespace std; #define f1r(i, a, b) for (int i = a; i < b; ++i) #define f0r(i, a) f1r(i, 0, a) #define each(t, a) for (auto& t : a) #define pb push_back #define eb emplace_back #define mp make_pair #define f first #define s second using vi = vector<int>; using pi = pair<int, int>; using vpi = vector<pi>; using ll = long long; namespace { int a, b; } // namespace void Init(int A, int B) { ::a = A; ::b = B; } int MoveT(vi& y) { // fails right now return -1; } int MoveG(vi& y) { int a0 = y[0]; int a1 = y[1]; int a2 = y[2]; if (a0 && a1) { return 0; } else if (a1 && a2) { return 1; } else if (a2 && a0) { return 2; } else if (a0) { return 0; } else if (a1) { return 1; } else if (a2) { return 2; } return -1; } int Move(vi y) { if (a >= 3) { return MoveG(y); } else { return MoveT(y); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...