제출 #1181392

#제출 시각아이디문제언어결과실행 시간메모리
1181392CaiWinDao길고양이 (JOI20_stray)C++20
0 / 100
23 ms11816 KiB
#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 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...