কম্পিউটার টিউটোরিয়াল

প্রসেস কিল করা (Kill Process) C++-এ

সমস্যা বিবরণ

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 ট্রি ট্রাভার্সাল

  1. অ্যাডজেসেন্সি লিস্ট বানান: parent -> [children]।
  2. কিল 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) — অ্যাডজেসেন্সি লিস্ট ও কিউ।
  1. C++-এ Line Reflection: ২D প্লেনে বিন্দুগুলোর Y-অক্ষ সমান্তরাল প্রতিফলন লাইন আছে কিনা যাচাই করা

  2. C++-এ ডায়াগোনাল ট্রায়ভার্স II

  3. স্কোয়ারেল সিমুলেশন (Squirrel Simulation) C++-এ

  4. C++-এ আয়তাকার এলাকা II (Rectangle Area II) সমাধান