ধরুন আমাদের কাছে কর্মচারীর তথ্যের একটি ডেটা স্ট্রাকচার আছে, সেখানে কর্মচারীর অনন্য আইডি, তার গুরুত্বের মান এবং তার সরাসরি অধস্তনদের আইডি রয়েছে। উদাহরণ হিসাবে, কর্মচারী 1 হল কর্মচারী 2 এর নেতা এবং কর্মচারী 2 হল কর্মচারী 3 এর নেতা। এবং ধরুন তাদের গুরুত্বের মান যথাক্রমে 15, 10 এবং 5। তারপরে কর্মচারী 1 এর একটি ডেটা কাঠামো রয়েছে যেমন [1, 15, [2]], এবং কর্মচারী 2 এর রয়েছে [2, 10, [3]], এবং কর্মচারী 3 এর রয়েছে [3, 5, []]।
সুতরাং, যদি আমাদের কাছে একটি কোম্পানির কর্মচারীর তথ্য থাকে, এবং একটি কর্মচারী আইডি থাকে, তাহলে আমাদের এই কর্মচারী এবং তার সমস্ত অধীনস্থদের মোট গুরুত্বের মূল্য খুঁজে বের করতে হবে৷
সুতরাং, যদি ইনপুট হয় [[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1, তাহলে আউটপুট হবে 11, Emp1 হিসাবে গুরুত্ব মান 5 আছে, এবং Emp1 এর দুটি সরাসরি অধস্তন রয়েছে, তারা হল − Emp2 এবং Emp3। এখন উভয়েরই গুরুত্ব মান 3 আছে। সুতরাং, Emp1 এর মোট গুরুত্ব মান হল 5 + 3 + 3 =11।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- ওজন :=একটি নতুন মানচিত্র, নেতা :=একটি নতুন মানচিত্র
- প্রতিটি কর্মচারীর জন্য, করুন
- ওজন[e[0]] :=e[1]
- নেতা[e[0]] :=e[2]
- res :=0
- res :=res + weight[id]
- সারি :=নেতা[আইডি]
- যখন সারি অ-শূন্য, do
- new_queue :=একটি নতুন তালিকা
- নোড :=সারি থেকে শেষ উপাদান মুছুন
- res :=res + weight[node]
- যদি লিডার[নোড] অ-শূন্য হয়, তাহলে
- নতুন_সারি :=নতুন_সারি + নেতা[নেতার আকার]
- সারি :=সারি + নতুন_সারি
- রিটার্ন রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution(object): def getImportance(self, employees, id): weight = {} leader = {} for e in employees: weight[e[0]] = e[1] leader[e[0]] = e[2] res = 0 res += weight[id] queue = leader[id] while queue: new_queue = [] node = queue.pop() res += weight[node] if leader[node]: new_queue += leader[node] queue += new_queue return res ob = Solution() print(ob.getImportance([[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1))
ইনপুট
[[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1
আউটপুট
11