PAT T1001. Battle Over Cities - Hard Version (35)

来源:互联网 发布:淘宝剁手党段子 编辑:程序博客网 时间:2024/06/05 08:49
#e9015584e6a44b14988f13e2298bcbf9import sys as O0O0OO00OOOOOO0O0 inf =0x3fffffff class Sume :    def __init__ (O00OOO000O0O00OO0 ,OOO00OO0OOO0O0O00 ,OOO00000O0OOO0O0O ,OO00O0OOOO0O0OOOO ,O0OO0O000O0O00OOO ):        O00OOO000O0O00OO0 .u =OOO00OO0OOO0O0O00         O00OOO000O0O00OO0 .v =OOO00000O0OOO0O0O         O00OOO000O0O00OO0 .w =OO00O0OOOO0O0OOOO         O00OOO000O0O00OO0 .st =O0OO0O000O0O00OOO     def __lt__ (OOOOO0OO000O0O000 ,OO0O00OOO0OOO0O00 ):        if OOOOO0OO000O0O000 .st ==OO0O00OOO0OOO0O00 .st :            return OOOOO0OO000O0O000 .w <OO0O00OOO0OOO0O00 .w         return OOOOO0OO000O0O000 .st >=OO0O00OOO0OOO0O00 .st def recurve (OO000O00OOO0O000O ):    if f [OO000O00OOO0O000O ]==OO000O00OOO0O000O :        return OO000O00OOO0O000O     else :        f [OO000O00OOO0O000O ]=recurve (f [OO000O00OOO0O000O ])        return f [OO000O00OOO0O000O ]def might (OOO0000O0OO0000O0 ,OOOO0OOO00OOO0000 ):    O0000OOOOOOOOO0OO =recurve (OOO0000O0OO0000O0 )    OOOO00O00O0OO0O00 =recurve (OOOO0OOO00OOO0000 )    if O0000OOOOOOOOO0OO ==OOOO00O00O0OO0O00 :        return False     f [O0000OOOOOOOOO0OO ]=OOOO00O00O0OO0O00     return True def MST (O0O00000O0OO00OOO ,OO00OO00O00O0O00O ,OO000O00OOOOOOOO0 ):    OOOO0O0OOOO0OOO00 =0     O00OOO0O0000OOOOO =0     for O00OOO00O0OO0OOOO in OO00OO00O00O0O00O :        if O00OOO00O0OO0OOOO .u !=OO000O00OOOOOOOO0 and O00OOO00O0OO0OOOO .v !=OO000O00OOOOOOOO0 :            if might (O00OOO00O0OO0OOOO .u ,O00OOO00O0OO0OOOO .v ):                O00OOO0O0000OOOOO +=1                 if O00OOO00O0OO0OOOO .st <1 :                    OOOO0O0OOOO0OOO00 +=O00OOO00O0OO0OOOO .w         if O00OOO0O0000OOOOO >O0O00000O0OO00OOO -2 :            break     if O00OOO0O0000OOOOO <O0O00000O0OO00OOO -2 :        return inf     return OOOO0O0OOOO0OOO00 def nxln ():    return O0O0OO00OOOOOO0O0 .stdin .readline ()def main ():    OOOOO000000O0O000 =nxln ()    OOOO0000O000O0OO0 =OOOOO000000O0O000 .split (' ')    O000OO000OOOO0OOO =int (OOOO0000O000O0OO0 [0 ])    O0OO00000000O00O0 =int (OOOO0000O000O0OO0 [1 ])    O0OO0OOOO000OO000 =[0 ]*(O000OO000OOOO0OOO +1 )    OOO000O0O0O00OOOO =[0 ]    for O0OO0OOO0O000O0OO in range (1 ,O000OO000OOOO0OOO +1 ):        OOO000O0O0O00OOOO .append (O0OO0OOO0O000O0OO )    OOO00OOO00OOO0000 =[]    for O0OO0OOO0O000O0OO in range (1 ,O0OO00000000O00O0 +1 ):        OOOOO000000O0O000 =nxln ()        OOOO0000O000O0OO0 =OOOOO000000O0O000 .split (' ')        OO00O00OOOOO0O000 =int (OOOO0000O000O0OO0 [0 ])        OOO000OOO000O0OOO =int (OOOO0000O000O0OO0 [1 ])        OOO000O0OOOO0OOOO =int (OOOO0000O000O0OO0 [2 ])        OOOO00O0OO0OOO000 =int (OOOO0000O000O0OO0 [3 ])        OOO00OOO00OOO0000 .append (Sume (OO00O00OOOOO0O000 ,OOO000OOO000O0OOO ,OOO000O0OOOO0OOOO ,OOOO00O0OO0OOO000 ))    OOO00OOO00OOO0000 .sort ()    OOO0OO00OOOOO0000 =[0 ]    global f     for O0OO0OOO0O000O0OO in range (1 ,O000OO000OOOO0OOO +1 ):        f =list (OOO000O0O0O00OOOO )        O0OO0OOOO000OO000 [O0OO0OOO0O000O0OO ]=MST (O000OO000OOOO0OOO ,OOO00OOO00OOO0000 ,O0OO0OOO0O000O0OO )        if O0OO0OOOO000OO000 [O0OO0OOO0O000O0OO ]>O0OO0OOOO000OO000 [OOO0OO00OOOOO0000 [0 ]]:            OOO0OO00OOOOO0000 .clear ()            OOO0OO00OOOOO0000 .append (O0OO0OOO0O000O0OO )        elif O0OO0OOOO000OO000 [O0OO0OOO0O000O0OO ]==O0OO0OOOO000OO000 [OOO0OO00OOOOO0000 [0 ]]and O0OO0OOOO000OO000 [O0OO0OOO0O000O0OO ]>0 :            OOO0OO00OOOOO0000 .append (O0OO0OOO0O000O0OO )    for O0OO0OOO0O000O0OO in range (0 ,len (OOO0OO00OOOOO0000 )):        print (OOO0OO00OOOOO0000 [O0OO0OOO0O000O0OO ],end =(" "if O0OO0OOO0O000O0OO <len (OOO0OO00OOOOO0000 )-1 else ""))if __name__ =="__main__":    main ()
0 0
原创粉丝点击