結果
問題 | No.1473 おでぶなおばけさん |
ユーザー |
👑 ![]() |
提出日時 | 2021-04-09 21:47:24 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 813 ms / 2,000 ms |
コード長 | 1,555 bytes |
コンパイル時間 | 421 ms |
コンパイル使用メモリ | 82,176 KB |
実行使用メモリ | 117,924 KB |
最終ジャッジ日時 | 2024-06-25 04:56:37 |
合計ジャッジ時間 | 24,387 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 47 |
ソースコード
""""""import sysfrom sys import stdindef uf_find(n,p):ufl = []while p[n] != n:ufl.append(n)n = p[n]for i in ufl:p[i] = nreturn ndef uf_union(a,b,p,rank):ap = uf_find(a,p)bp = uf_find(b,p)if ap == bp:return Trueelse:if rank[ap] > rank[bp]:p[bp] = apelif rank[ap] < rank[bp]:p[ap] = bpelse:p[bp] = aprank[ap] += 1return Falsefrom collections import dequedef NC_Dij(lis,start):ret = [float("inf")] * len(lis)ret[start] = 0q = deque([start])plis = [i for i in range(len(lis))]while len(q) > 0:now = q.popleft()for nex in lis[now]:if ret[nex] > ret[now] + 1:ret[nex] = ret[now] + 1plis[nex] = nowq.append(nex)return ret,plisn,m = map(int,stdin.readline().split())lis = [ [] for i in range(n)]duv = []for i in range(m):u,v,d = map(int,stdin.readline().split())u -= 1v -= 1duv.append( (d,u,v) )duv.sort()duv.reverse()p = [i for i in range(n)]rank = [0] * nmaxid = float("inf")for d,u,v in duv:if maxid == float("inf"):uf_union(u,v,p,rank)if uf_find(0,p) == uf_find(n-1,p):maxid = dlis[u].append(v)lis[v].append(u)elif maxid == d:lis[u].append(v)lis[v].append(u)dlis,tmp = NC_Dij(lis,0)print (maxid,dlis[-1])