leetcode

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

3067.cpp (1303B)


0 class Solution {
1 public:
2 vector<int> countPairsOfConnectableServers(const vector<vector<int>> &edges,
3 const int signalSpeed) const {
4 const int n = size(edges) + 1;
5 vector<vector<pair<int, int>>> adj(n);
7 for (const auto &edge : edges) {
8 adj[edge[0]].emplace_back(edge[1], edge[2]);
9 adj[edge[1]].emplace_back(edge[0], edge[2]);
10 }
12 static int cnt[1001], res[1001];
13 stack<tuple<int, int, int>> st;
15 memset(res, 0x00, n * sizeof(*res));
16 for (int i = 0; i < n; i++) {
17 memset(cnt, 0x00, sizeof(cnt));
18 for (int j = 0; j < size(adj[i]); j++) {
19 st.emplace(i, adj[i][j].first, adj[i][j].second);
21 while (!st.empty()) {
22 const auto [p, c, t] = st.top();
23 st.pop();
24 if (t % signalSpeed == 0) cnt[j]++;
25 for (const auto [n, w] : adj[c]) {
26 if (n == p) continue;
27 st.emplace(c, n, t + w);
28 }
29 }
31 for (int k = 0; k < j; k++)
32 res[i] += cnt[j] * cnt[k];
33 }
34 }
36 return vector<int>(res, res + n);
37 }
38 };