hint

ÀÌ ¹®Á¦´Â ±×·¡ÇÁ¿¡¼­ °¢ °£¼±ÀÌ Á¦¿ÜµÇ¾úÀ» ¶§¸¶´Ù ÃÖ¼Òºñ¿ë½ÅÀåÆ®¸®(Minimum cost Spanning Tree, MST)ÀÇ ºñ¿ëÀ» ±¸ÇÏ´Â ¹®Á¦ÀÌ´Ù.

°¡Àå ½¬¿î ¹æ¹ýÀº ¸ðµç M°³ÀÇ °£¼±¿¡ ´ëÇØ ±× °£¼±À» Á¦¿ÜÇÑ ±×·¡ÇÁ¸¦ ¸¸µé°í Kruskal Algorithm O(M logM)À» ÅëÇØ MST¸¦ ±¸ÇÏ´Â ¹æ¹ýÀÌ´Ù. ÀÌ ¹æ¹ýÀº O(M^2 log M)ÀÇ ½Ã°£º¹Àâµµ¸¦ °¡Áö¸ç ºÎºÐ¹®Á¦2¸¦ ÇØ°áÇÏ¿© 23Á¡À» ¹ÞÀ» ¼ö ÀÖ´Ù.

ÁÖ¾îÁø ±×·¡ÇÁÀÇ MST¸¦ ±¸Çϸé MST¿¡ Æ÷ÇÔµÇÁö ¾Ê´Â °£¼±µéÀ» Á¦¿ÜÇÑ ±×·¡ÇÁÀÇ MST´Â ±×´ë·ÎÀ̱⠶§¹®¿¡ »õ·Î MST¸¦ ±¸ÇÏÁö ¾Ê¾Æµµ µÈ´Ù. À̸¦ ÅëÇØ MST¿¡ Æ÷ÇÔµÈ N-1 °³ÀÇ °£¼±¿¡ ´ëÇؼ­¸¸ MST¸¦ ±¸ÇÏ¸é µÇ°í,O(NM logM)ÀÇ ½Ã°£º¹Àâµµ·Î ºÎºÐ¹®Á¦3À» ÇØ°áÇÏ¿© 34Á¡À» ¹ÞÀ» ¼ö ÀÖ´Ù.

MST¿¡ ÀÖ´Â °£¼±ÀÌ Á¦¿ÜµÇ´Â °æ¿ì À§ÀÇ ¹æ¹ýó·³ MST¸¦ ´Ù½Ã ±¸ÇÏÁö ¾Ê°íµµ ÇØ´ç °£¼±ÀÌ ¾î¶² ´Ù¸¥ °£¼±À¸·Î ´ëüµÇ¾î¾ß ÇÏ´ÂÁö¸¦ ¾Æ·¡ÀÇ ¹æ¹ýÀ¸·Î ºü¸£°Ô ±¸ÇÒ ¼ö ÀÖ´Ù.

ÁÖ¾îÁø ±×·¡ÇÁÀÇ MST¸¦ Æ®¸® T ¶ó ÇÏÀÚ. T ¿¡ ÀÖ´Â °£¼± e°¡ Á¦¿ÜµÇ°í »õ·Î¿î MST T' À» ±¸ÇÏ´Â »óȲÀÌ´Ù. T ¿¡¼­ °£¼± e¸¦ Á¦¿ÜÇϸé, µÎ °³ÀÇ Æ®¸®·Î ³ª´©¾îÁø´Ù. ÀÌÁ¦ ¿ø·¡ ±×·¡ÇÁ¿¡¼­ ³ª´©¾îÁø µÎ Æ®¸®¸¦ ¿¬°áÇÏ´Â °£¼± Áß °¡ÁßÄ¡°¡ Á¦ÀÏ ÀÛÀº °ÍÀ» ±¸ÇØ ¿¬°áÀ» ÇØÁÖ¸é »õ·Î¿î MST T¡ÇÀ» ±¸ÇÒ ¼ö ÀÖ´Ù. ÀÌ ¶§ ³ª´©¾îÁø µÎ Æ®¸®¸¦ ¿¬°áÇÏ´Â °£¼± Áß °¡ÁßÄ¡°¡ Á¦ÀÏ ÀÛÀº °ÍÀ» ºü¸£°Ô ±¸ÇÒ ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÑ´Ù.

¿ø·¡ ±×·¡ÇÁ¿¡ ÀÖ´Â °£¼±À̸ç T ¿¡ ÀÖÁö ¾ÊÀº °£¼± x°¡ ÀÖ´Ù. ÀÌ °£¼±Àº ³ëµå v1ÉÕ°ú ³ëµå v2 ¸¦ ¿¬°áÇÏ´Â °£¼±ÀÌ´Ù. ÀÌ °£¼±ÀÌ T ¿¡¼­ °£¼± e°¡ Á¦¿ÜµÇ¾úÀ» ¶§, ³ª´©¾îÁö´Â µÎ Æ®¸®¸¦ ¿¬°áÇÏ´Â °£¼±ÀÌ µÇ±â À§Çؼ­´Â ÇÊ¿äÃæºÐÀ¸·Î T ¿¡¼­ ³ëµå v1 ¿¡¼­ ³ëµå v2 ·Î °¡´Â °æ·Î Áß ¿¡ °£¼± e°¡ ÀÖ¾î¾ßÇÑ´Ù.

À̸¦ ÀÌ¿ëÇÏ¿© MST T ¿¡ ¼ÓÇÏÁö ¾ÊÀº ±×·¡ÇÁÀÇ °£¼± x¿¡ ´ëÇؼ­ T ¿¡¼­ ³ëµå v1 ¿¡¼­ ³ëµå v2 ·Î °¡´Â °æ·Î¿¡ °¡ÁßÄ¡ °ªÀ» ±â·ÏÇÏ¿© ºü¸£°Ô ±¸ÇÒ ¼ö ÀÖ´Ù. v1 °ú v2 »çÀÌÀÇ °æ·Î´Â T¿¡¼­ v1 °ú v2 ÀÇ Least Common Ancestor(LCA) p¸¦ ±¸ÇßÀ» ¶§ v1 ~ p ~ v2ÀÌ´Ù. ÀÌ ¹æ¹ý ÀÇ ½Ã°£º¹Àâµµ´Â O(MN) À̸ç, ºÎºÐ¹®Á¦4¸¦ ÇØ°áÇÏ¿© 61Á¡À» ¹ÞÀ» ¼ö ÀÖ´Ù.

ºÎºÐ¹®Á¦4¸¦ ÇØ°áÇÏ´Â O(MN) ¹æ¹ýÀ» °³¼±Çϸé O(M log M) ¿¡ ÇØ°áÀÌ °¡´ÉÇÏ´Ù. MST T¿¡ Æ÷ÇÔµÇÁö ¾ÊÀº °£¼± x¿¡ ´ëÇØ MST T¿¡¼­ v1 °ú v2 ¸¦ ¿¬°áÇÏ´Â °æ·Î v1 ~ p , v2 ~ p ¿¡ °¡ÁßÄ¡ °ªÀ» ±â·ÏÇÏ´Â °úÁ¤À» ¸ðµç °£¼± x¿¡ ´ëÇØ ¹Ýº¹ÇÏ°Ô µÈ´Ù. À̸¦ °¡ÁßÄ¡°¡ ÀÛÀº °£¼± xºÎÅÍ ¼öÇàÇϸé ÀÌ¹Ì °¡ÁßÄ¡°¡ ±â·ÏµÈ MST TÀÇ °£¼±Àº °Ç³Ê ¶Û ¼ö ÀÖ´Ù. °¡ÁßÄ¡ ±â·ÏÀ» ¹Ýº¹ÇÏÁö ¾Ê°í °Ç³Ê¶Ù´Â 󸮸¦ Union Find Algorithm(ȤÀº ¼­·Î¼ÒÁýÇÕ ±¸Á¶, Disjoint Set data structure)ÀÇ °æ·Î ¾ÐÃà(Path Compression)°ú °°Àº °úÁ¤À» ÅëÇÏ¿© ÇØ°áÇÒ ¼ö ÀÖ´Ù.

   

[ȨÀ¸·Î]  [µÚ ·Î]