সমস্যা বিবরণ
n প্রসেস আছে। প্রতিটির অনন্য PID এবং PPID (প্যারেন্ট PID) আছে। একটি প্রসেস কিল করলে তার সকল চাইল্ড প্রসেসও কিল হয়। কিল করার প্রসেসের PID দেওয়া থাকলে, সব কিল হওয়া প্রসেসের PID লিস্ট রিটার্ন করুন।
উদাহরণ
pid = [1, 3, 10, 5], ppid = [3, 0, 5, 3], kill = 5
ট্রি: 3(রুট) → 1, 5; 5 → 10
আউটপুট: [5, 10]
অ্যালগরিদম: BFS/DFS ট্রি ট্রাভার্সাল
- অ্যাডজেসেন্সি লিস্ট বানান:
parent -> [children]। - কিল PID থেকে BFS/DFS চালিয়ে সব ডিসেন্ডেন্ট কালেক্ট করুন।
C++ বাস্তবায়ন
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
vector<int> killProcess(vector<int>& pid, vector<int>& ppid, int kill) {
unordered_map<int, vector<int>> children;
int n = pid.size();
for (int i = 0; i < n; i++) {
children[ppid[i]].push_back(pid[i]);
}
vector<int> ans;
queue<int> q;
q.push(kill);
while (!q.empty()) {
int cur = q.front(); q.pop();
ans.push_back(cur);
for (int child : children[cur])
q.push(child);
}
return ans;
}
};
int main() {
Solution ob;
vector<int> pid = {1,3,10,5}, ppid = {3,0,5,3};
auto res = ob.killProcess(pid, ppid, 5);
for (int x : res) cout << x << " "; // 5 10
return 0;
}
ইনপুট ও আউটপুট
| ইনপুট | আউটপুট |
|---|---|
pid=[1,3,10,5], ppid=[3,0,5,3], kill=5 | [5,10] |
জটিলতা বিশ্লেষণ
- সময় জটিলতা: O(N) — N = প্রসেস সংখ্যা।
- স্থান জটিলতা: O(N) — অ্যাডজেসেন্সি লিস্ট ও কিউ।