Submission #49168754


Source Code Expand

#ABC335E Non-Decreasing Colorful Path  UnionFind解

#UnionFind 使用時には UnionFind(N)で関数宣言を。
class UnionFind:
    def __init__(self,N):
        self._parent=[-1 for i in[0]*N]  #子なら親の頂点番号、親なら頂点数を負値で入力

    def find(self,v):  #頂点vの親を探す。同時に経路圧縮する
        if self._parent[v]<0:return v
        vertices=[]
        while self._parent[v]>=0:vertices.append(v);v=self._parent[v]
        for i in vertices:self._parent[i]=v
        return v

    def unite(self,x,y):  #頂点xとyを併合し、併合の有無を返す
        x,y=self.find(x),self.find(y)
        if x==y:return 0
        if self._parent[x]>self._parent[y]:x,y=y,x  #負値で管理している点に注意
        self._parent[x]+=self._parent[y];self._parent[y]=x;return 1

    def same(self,x,y):return self.find(x)==self.find(y)   #xとyは同一集合か返す
    def size(self,x):  return -self._parent[self.find(x)]  #xの集合のサイズを求める


#入力受取
N,M = map(int,input().split())
A = list(map(int,input().split()))

#UnionFindを準備
UF = UnionFind(N)

#有向グラフとして辺を受け取り
G = [[] for _ in range(N)]
for _ in range(M):
    u,v = map(int, input().split())
    if A[u-1]  < A[v-1]: G[u-1].append(v-1)
    if A[u-1] == A[v-1]: UF.unite(u-1,v-1)
    if A[u-1] >  A[v-1]: G[v-1].append(u-1)

#DAG上のDPを解く  DP[i]: 頂点iの最長パス
#親の頂点でしかDPの更新を行わない点に注意
DP = [-10**18] * N
DP[UF.find(0)] = 1
Q = [[] for _ in range(max(A)+1)]  #Q[A[i]]: 該当する頂点i
for i in range(N): Q[A[i]].append(i)

#A[i]の昇順にDP
for L in Q:
    for i in L:
        now = UF.find(i)  #頂点iの親
        for j in G[i]:
            next = UF.find(j)  #頂点jの親
            DP[next] = max(DP[next], DP[now]+1)
        
#答えを出力
print(max(0, DP[UF.find(-1)]))

Submission Info

Submission Time
Task E - Non-Decreasing Colorful Path
User navel_tos
Language Python (PyPy 3.10-v7.3.12)
Score 525
Code Size 1978 Byte
Status AC
Exec Time 318 ms
Memory 124000 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 525 / 525
Status
AC × 3
AC × 95
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All hand_01.txt, hand_02.txt, sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt, test_60.txt, test_61.txt, test_62.txt, test_63.txt, test_64.txt, test_65.txt, test_66.txt, test_67.txt, test_68.txt, test_69.txt, test_70.txt, test_71.txt, test_72.txt, test_73.txt, test_74.txt, test_75.txt, test_76.txt, test_77.txt, test_78.txt, test_79.txt, test_80.txt, test_81.txt, test_82.txt, test_83.txt, test_84.txt, test_85.txt, test_86.txt, test_87.txt, test_88.txt, test_89.txt, test_90.txt
Case Name Status Exec Time Memory
hand_01.txt AC 56 ms 76624 KiB
hand_02.txt AC 56 ms 76620 KiB
sample_01.txt AC 57 ms 76492 KiB
sample_02.txt AC 56 ms 76488 KiB
sample_03.txt AC 56 ms 76500 KiB
test_01.txt AC 60 ms 82436 KiB
test_02.txt AC 252 ms 123836 KiB
test_03.txt AC 244 ms 124000 KiB
test_04.txt AC 299 ms 123520 KiB
test_05.txt AC 160 ms 83416 KiB
test_06.txt AC 172 ms 88988 KiB
test_07.txt AC 169 ms 89092 KiB
test_08.txt AC 163 ms 89364 KiB
test_09.txt AC 156 ms 89120 KiB
test_10.txt AC 137 ms 87328 KiB
test_11.txt AC 103 ms 85552 KiB
test_12.txt AC 118 ms 83052 KiB
test_13.txt AC 145 ms 86228 KiB
test_14.txt AC 150 ms 87184 KiB
test_15.txt AC 94 ms 83308 KiB
test_16.txt AC 99 ms 83852 KiB
test_17.txt AC 119 ms 86404 KiB
test_18.txt AC 147 ms 83124 KiB
test_19.txt AC 170 ms 89680 KiB
test_20.txt AC 99 ms 83752 KiB
test_21.txt AC 105 ms 84076 KiB
test_22.txt AC 120 ms 85608 KiB
test_23.txt AC 132 ms 87748 KiB
test_24.txt AC 153 ms 83116 KiB
test_25.txt AC 93 ms 83784 KiB
test_26.txt AC 123 ms 85136 KiB
test_27.txt AC 125 ms 85452 KiB
test_28.txt AC 133 ms 86156 KiB
test_29.txt AC 132 ms 87536 KiB
test_30.txt AC 95 ms 83104 KiB
test_31.txt AC 117 ms 84604 KiB
test_32.txt AC 136 ms 85780 KiB
test_33.txt AC 148 ms 87308 KiB
test_34.txt AC 146 ms 87732 KiB
test_35.txt AC 92 ms 91016 KiB
test_36.txt AC 113 ms 83532 KiB
test_37.txt AC 132 ms 85108 KiB
test_38.txt AC 140 ms 86644 KiB
test_39.txt AC 165 ms 88824 KiB
test_40.txt AC 86 ms 83692 KiB
test_41.txt AC 282 ms 97784 KiB
test_42.txt AC 316 ms 114840 KiB
test_43.txt AC 219 ms 93296 KiB
test_44.txt AC 281 ms 109876 KiB
test_45.txt AC 318 ms 122844 KiB
test_46.txt AC 302 ms 99520 KiB
test_47.txt AC 258 ms 96672 KiB
test_48.txt AC 253 ms 99812 KiB
test_49.txt AC 247 ms 103740 KiB
test_50.txt AC 231 ms 90796 KiB
test_51.txt AC 299 ms 114712 KiB
test_52.txt AC 299 ms 105696 KiB
test_53.txt AC 313 ms 118140 KiB
test_54.txt AC 227 ms 97844 KiB
test_55.txt AC 270 ms 93668 KiB
test_56.txt AC 301 ms 123348 KiB
test_57.txt AC 285 ms 123528 KiB
test_58.txt AC 279 ms 123524 KiB
test_59.txt AC 276 ms 123456 KiB
test_60.txt AC 272 ms 123296 KiB
test_61.txt AC 284 ms 123020 KiB
test_62.txt AC 286 ms 123452 KiB
test_63.txt AC 293 ms 123588 KiB
test_64.txt AC 291 ms 123332 KiB
test_65.txt AC 261 ms 122900 KiB
test_66.txt AC 230 ms 102096 KiB
test_67.txt AC 215 ms 102324 KiB
test_68.txt AC 211 ms 102360 KiB
test_69.txt AC 220 ms 102364 KiB
test_70.txt AC 224 ms 102028 KiB
test_71.txt AC 214 ms 101804 KiB
test_72.txt AC 237 ms 102380 KiB
test_73.txt AC 215 ms 102048 KiB
test_74.txt AC 217 ms 101980 KiB
test_75.txt AC 230 ms 101864 KiB
test_76.txt AC 78 ms 82256 KiB
test_77.txt AC 83 ms 84428 KiB
test_78.txt AC 79 ms 82324 KiB
test_79.txt AC 80 ms 82456 KiB
test_80.txt AC 81 ms 81936 KiB
test_81.txt AC 294 ms 123664 KiB
test_82.txt AC 289 ms 123696 KiB
test_83.txt AC 308 ms 123860 KiB
test_84.txt AC 298 ms 123388 KiB
test_85.txt AC 313 ms 123680 KiB
test_86.txt AC 237 ms 120996 KiB
test_87.txt AC 236 ms 121640 KiB
test_88.txt AC 243 ms 121116 KiB
test_89.txt AC 232 ms 121444 KiB
test_90.txt AC 295 ms 123124 KiB