ข้อนี้ใช้ Disjoint Set Union (DSU)
สังเกตุว่าในการต่อสู้ทุกครั้งจะมีเพียงนายพลเท่านั้นที่เข้าร่วมการต่อสู้ ดังนั้นเราสามารถแยกผู้เล่นทุกคนออกเป็นกลุ่มๆโดยที่แต่ละกลุ่มมีนายพลเพียงผู้เดียวเท่านั้น แต่ละกลุ่มจะแทนด้วย component ใน DSU และเราจะทำให้นายพลของแต่ละกลุ่มเป็น root เสมอ เมื่อนายพลของผู้เล่นกลุ่มหนึ่งชนะนายพลของผู้แล่นอีกกลุ่มหนึ่ง เราจะทำการ merge สอง component นี้โดยที่ root ของกลุ่มที่ชนะอยู่สูงกว่า root ของกลุ่มที่แพ้ ดังนั้น weighted union ไม่สามารถใช้ได้ แต่ path compression ยังใช้ได้เหมือนเดิม อย่างไรก็ตาม เราสามารถยังใช้เทคนิคบางอย่างจาก weighted union ได้ คือแทนที่จะเก็บจำนวน node ใน tree นั้น เราสามารถเก็บกำลังพลของแต่ละกลุ่มได้เลย ฉนั้นในขั้นตอนการ merge เราก็จะเพิ่มกำลังพลให้กลุ่มที่ชนะและตัดกำลังพลกลุ่มที่แพ้จากคำอธิบายโจทย์ สังเกตุว่าถ้าโค้ดเขียนเหมือน weighted union จะสามารถเก็บกำลังพลใน array เดียวได้เลย (เพื่อความสำดวก นิยามว่า ) และเมื่ออยากได้กำลังพลของกลุ่มหนึ่งจะหาได้จากค่าที่ ได้เลย