From 8066fae29ff24803786bc54d76d8cb81f9068a31 Mon Sep 17 00:00:00 2001 From: Eatswap Date: Fri, 24 Mar 2023 23:51:51 +0800 Subject: [PATCH] add: 230324 --- cpp/2303/230324.cpp | 45 +++++++++++++++++++++++++++++++++++++++++ cpp/2303/CMakeLists.txt | 2 +- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 cpp/2303/230324.cpp diff --git a/cpp/2303/230324.cpp b/cpp/2303/230324.cpp new file mode 100644 index 0000000..225bad3 --- /dev/null +++ b/cpp/2303/230324.cpp @@ -0,0 +1,45 @@ +#include +#include +#include +#include +#include + +/** + * 1466. Reorder Routes to Make All Paths Lead to the City Zero + * + * There are n cities numbered from 0 to n - 1 and n - 1 roads such that there is only one way to travel between two different cities (this network form a tree). Last year, The ministry of transport decided to orient the roads in one direction because they are too narrow. + * Roads are represented by connections where connections[i] = [ai, bi] represents a road from city ai to city bi. + * This year, there will be a big event in the capital (city 0), and many people want to travel to this city. + * Your task consists of reorienting some roads such that each city can visit the city 0. Return the minimum number of edges changed. + * It's guaranteed that each city can reach city 0 after reorder. + */ + +class Solution { +public: + static int minReorder(int n, const std::vector>& connections) { + std::vector> vs(n); + for (const auto& i : connections) { + vs[i[0]].insert(-i[1]); + vs[i[1]].insert(i[0]); + } + std::vector vis(n); + std::function dfs = [&](int cur) { + vis[cur] = true; + int ret = 0; + for (int nx : vs[cur]) { + if (vis[std::abs(nx)]) + continue; + ret += (nx < 0) + dfs(std::abs(nx)); + } + return ret; + }; + return dfs(0); + } +}; + +int main() { + std::cout << Solution::minReorder(6, { + {0, 1}, {1, 3}, {2, 3}, {4, 0}, {4, 5} + }); + return 0; +} diff --git a/cpp/2303/CMakeLists.txt b/cpp/2303/CMakeLists.txt index 1045212..6155d9d 100644 --- a/cpp/2303/CMakeLists.txt +++ b/cpp/2303/CMakeLists.txt @@ -3,4 +3,4 @@ PROJECT(2303) SET(CMAKE_CXX_STANDARD 23) -ADD_EXECUTABLE(2303 230324-CN.cpp) +ADD_EXECUTABLE(2303 230324.cpp)