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 |
|
|
| 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 |