leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

commit af5b8eae8f485b6d2e43ee4dbc3438a5800fdcbb
parent 546dc79fdfe45a4a83af84ef08f25fb857fc0f99
author Dimitrije Dobrota <mail@dimitrijedobrota.com>
date Sun, 9 Apr 2023 19:13:41 +0200

Daily Problem

Diffstat:
A Problems/1857.cpp | ++++++++++++++++++++++++++++++++++++++++++++++
M README.md | +

2 files changed, 47 insertions(+), 0 deletions(-)


diff --git a/ Problems/1857.cpp b/ Problems/1857.cpp

@@ -0,0 +1,46 @@
class Solution {
public:
int largestPathValue(string colors, vector<vector<int>> &edges) {
int n = colors.size();
vector<unordered_map<int, int>> dp(n);
vector<vector<int>> adj(n);
vector<int> count(n, 0);
for (auto &edge : edges) {
adj[edge[0]].push_back(edge[1]);
count[edge[1]]++;
}
queue<int> q;
stack<int> st;
for (int i = 0; i < n; i++)
if (!count[i]) q.push(i);
while (!q.empty()) {
int root = q.front();
q.pop();
st.push(root);
for (int child : adj[root]) {
if (--count[child]) continue;
q.push(child);
}
}
for (int i = 0; i < n; i++)
if (count[i]) return -1;
int res = 0;
while (!st.empty()) {
int root = st.top();
st.pop();
for (int child : adj[root]) {
for (auto [color, count] : dp[child]) {
dp[root][color] = max(dp[root][color], count);
}
}
res = max(res, ++dp[root][colors[root]]);
}
return res;
}
};

diff --git a/ README.md b/ README.md

@@ -459,6 +459,7 @@ for solving problems. | 1823 | Medium | [Find the Winner of the Circular Game](Problems/1823.cpp) | | 1833 | Medium | [Maximum Ice Cream Bars](Problems/1833.cpp) | | 1834 | Medium | [Single-Threaded CPU](Problems/1834.cpp) |
| 1857 | Hard | [Largest Color Value in a Directed Graph](Problems/1857.cpp) |
| 1926 | Medium | [Nearest Exit from Entrance in Maze](Problems/1926.cpp) | | 1962 | Medium | [Remove Stones to Minimize the Total](Problems/1962.cpp) | | 1971 | Easy | [Find if Path Exists in Graph](Problems/1971.cpp) |