#include "Anthony.h"
#include <vector>
#include <queue>
std::vector<int> Mark(int N, int M, int A, int B, std::vector<int> U, std::vector<int> V) {
// Xây dựng danh sách kề cho đồ thị
std::vector<std::vector<int>> adj(N);
for (int i = 0; i < M; ++i) {
adj[U[i]].push_back(V[i]);
adj[V[i]].push_back(U[i]);
}
// BFS từ thị trấn 0 để xác định cha của mỗi đỉnh
std::vector<int> parent(N, -1);
std::queue<int> q;
q.push(0);
parent[0] = 0; // Đỉnh gốc tự làm cha của chính nó
while (!q.empty()) {
int u = q.front();
q.pop();
for (int v : adj[u]) {
if (parent[v] == -1) { // Nếu đỉnh v chưa được thăm
parent[v] = u; // Ghi nhận u là cha của v
q.push(v);
}
}
}
// Đánh dấu các cạnh
std::vector<int> marks(M);
for (int i = 0; i < M; ++i) {
int u = U[i], v = V[i];
// Nếu cạnh nối từ u đến cha của u hoặc từ v đến cha của v, đánh dấu 0
if (parent[u] == v || parent[v] == u) {
marks[i] = 0;
} else {
marks[i] = 1;
}
}
return marks;
}
#include "Catherine.h"
#include <vector>
namespace {
int A, B;
}
void Init(int a, int b) {
A = a; // Số loại dấu
B = b; // Số bước dư
}
int Move(std::vector<int> y) {
// y[i] là số con đường có dấu i từ đỉnh hiện tại (trừ đường vừa đi qua nếu có)
if (y[0] > 0) {
return 0; // Chọn dấu 0 nếu có
} else {
return -1; // Quay lại nếu không có dấu 0
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |