結果

問題 No.1473 おでぶなおばけさん
ユーザー timitimi
提出日時 2021-04-26 17:03:49
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 875 ms / 2,000 ms
コード長 1,029 bytes
コンパイル時間 273 ms
コンパイル使用メモリ 81,792 KB
実行使用メモリ 135,744 KB
最終ジャッジ日時 2024-07-05 02:41:20
合計ジャッジ時間 26,415 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 41 ms
53,888 KB
testcase_01 AC 41 ms
53,708 KB
testcase_02 AC 802 ms
122,292 KB
testcase_03 AC 640 ms
123,740 KB
testcase_04 AC 492 ms
105,372 KB
testcase_05 AC 263 ms
83,060 KB
testcase_06 AC 688 ms
118,916 KB
testcase_07 AC 875 ms
134,488 KB
testcase_08 AC 875 ms
134,284 KB
testcase_09 AC 852 ms
135,744 KB
testcase_10 AC 372 ms
89,952 KB
testcase_11 AC 368 ms
89,840 KB
testcase_12 AC 364 ms
89,816 KB
testcase_13 AC 256 ms
85,868 KB
testcase_14 AC 193 ms
81,792 KB
testcase_15 AC 345 ms
90,972 KB
testcase_16 AC 371 ms
89,576 KB
testcase_17 AC 86 ms
76,800 KB
testcase_18 AC 93 ms
76,928 KB
testcase_19 AC 406 ms
90,116 KB
testcase_20 AC 629 ms
114,664 KB
testcase_21 AC 605 ms
100,608 KB
testcase_22 AC 748 ms
115,748 KB
testcase_23 AC 694 ms
113,372 KB
testcase_24 AC 717 ms
110,884 KB
testcase_25 AC 832 ms
111,176 KB
testcase_26 AC 852 ms
116,584 KB
testcase_27 AC 324 ms
84,180 KB
testcase_28 AC 864 ms
133,448 KB
testcase_29 AC 559 ms
102,796 KB
testcase_30 AC 661 ms
108,684 KB
testcase_31 AC 709 ms
133,584 KB
testcase_32 AC 496 ms
118,496 KB
testcase_33 AC 462 ms
111,084 KB
testcase_34 AC 348 ms
95,400 KB
testcase_35 AC 319 ms
92,588 KB
testcase_36 AC 550 ms
97,748 KB
testcase_37 AC 627 ms
111,124 KB
testcase_38 AC 212 ms
80,400 KB
testcase_39 AC 391 ms
90,088 KB
testcase_40 AC 392 ms
89,696 KB
testcase_41 AC 384 ms
90,072 KB
testcase_42 AC 394 ms
90,060 KB
testcase_43 AC 239 ms
96,808 KB
testcase_44 AC 237 ms
97,056 KB
testcase_45 AC 236 ms
96,916 KB
testcase_46 AC 768 ms
112,604 KB
testcase_47 AC 834 ms
123,108 KB
testcase_48 AC 769 ms
118,356 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

N,M=map(int, input().split())
D=[]
for i in range(M):
  s,t,d=map(int, input().split())
  D.append((d,s,t))
D=sorted(D)[::-1]
par=[i for i in range(N)]
rank=[0]*(N)
friend=[0]*N
block=[0]*N
size=[1]*N
def find(x):
  if par[x]==x:
    return x
  else:
    par[x]=find(par[x])
    return par[x]
 
#同じ集合か判定
def same(x,y):
  return find(x)==find(y)
 
def union(x,y):
  x=find(x)
  y=find(y)
  if x==y:
    return 
  if rank[x]>rank[y]:
    par[y]=x
    size[x]+=size[y]
  else:
    par[x]=y
    size[y]+=size[x]
    if rank[x]==rank[y]:
      rank[y]+=1
E=[[]for i in range(N)] 
limit=0
for d,s,t in D:
  #print(s,t,d,limit)
  if limit>d:
    break
  s-=1
  t-=1
  union(s,t)
  E[s].append(t)
  E[t].append(s)
  if same(0,N-1):
    answ=d
    limit=d
from collections import deque
d=deque()
d.append((0,0,0))
F=[N]*N
while d:
  now,pre,num=d.popleft()
  for nex in E[now]:
    if nex==N-1:
      print(answ,num+1)
      exit()
    if nex!=pre:
      if num+1<F[nex]:
        F[nex]=num
        d.append((nex,now,num+1))
0