提出 #33481914


ソースコード 拡げる

N,M = gets.split.map(&:to_i)
ABC = $<.map{|ln| ln.split.map(&:to_i) }

E = Array.new(N+1){[]}
G = [-1]*(N+1)
F = lambda{|a|
	G[a]<0 ? a : G[a] = F[G[a]]
}
U = lambda{|a,b,c|
	x,y = F[a],F[b]
	next 0 if x==y
	x,y = y,x if G[y]<G[x]
	G[x] += G[y]
	G[y] = x
	E[a]<<[b,c]
	E[b]<<[a,c]
	next c
}
S = ABC.sort_by{_3}.sum{|a,b,c,| U[a,b,c] }

P = [nil]*(N+1)
D = [nil]*(N+1)
C1 = [nil]*(N+1)
P[0] = D[0] = C1[0] =
P[1] = D[1] = C1[1] = 0
*Q = 1
while a = Q.pop
	d = D[a]+1
	E[a].each{|b,c|
		next if D[b]
		P[b] = a
		D[b] = d
		C1[b] = c
		Q<<b
	}
end

AC = [(as,cs = P,C1)]
up = true
while up
	up = false
	AC<<(as,cs = (N+1).times.map{|i|
		a,c = as[i],cs[i]
		up |= as[a]!=a
		next as[a],[cs[a],c].max
	}.transpose)
end

C = lambda{|a,b|
	da,db = D[a],D[b]
	a,b,da,db = b,a,db,da if db<da
	c,dd = C1[b],db-da
	AC.each_with_index{|(as,cs),i|
		b,c = as[b],[c,cs[b]].max if 0<dd[i]
	}
	next c if a==b
	AC.reverse_each{|as,cs|
		a,b,c = as[a],as[b],[c,cs[a],cs[b]].max if as[a]!=as[b]
	}
	next [c,C1[a],C1[b]].max
}

puts ABC.map{|a,b,c| S-C[a,b]+c }

提出情報

提出日時
問題 O - 可変全域木
ユーザ ds14050
言語 Ruby (2.7.1)
得点 6
コード長 1107 Byte
結果 AC
実行時間 669 ms
メモリ 64904 KiB

ジャッジ結果

セット名 All
得点 / 配点 6 / 6
結果
AC × 43
セット名 テストケース
All 0.txt, 1.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 2.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 3.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 4.txt, 5.txt, 6.txt, 7.txt, 8.txt, 9.txt, s1.txt, s2.txt, s3.txt
ケース名 結果 実行時間 メモリ
0.txt AC 599 ms 49512 KiB
1.txt AC 309 ms 29692 KiB
10.txt AC 581 ms 44404 KiB
11.txt AC 585 ms 44256 KiB
12.txt AC 590 ms 44568 KiB
13.txt AC 591 ms 44264 KiB
14.txt AC 595 ms 44760 KiB
15.txt AC 612 ms 45404 KiB
16.txt AC 586 ms 44552 KiB
17.txt AC 595 ms 44264 KiB
18.txt AC 603 ms 44444 KiB
19.txt AC 604 ms 44388 KiB
2.txt AC 371 ms 35436 KiB
20.txt AC 635 ms 64164 KiB
21.txt AC 609 ms 64104 KiB
22.txt AC 615 ms 63988 KiB
23.txt AC 637 ms 64132 KiB
24.txt AC 605 ms 64020 KiB
25.txt AC 622 ms 63996 KiB
26.txt AC 609 ms 64044 KiB
27.txt AC 604 ms 63984 KiB
28.txt AC 608 ms 64108 KiB
29.txt AC 616 ms 64280 KiB
3.txt AC 643 ms 64756 KiB
30.txt AC 399 ms 23708 KiB
31.txt AC 404 ms 23564 KiB
32.txt AC 420 ms 23440 KiB
33.txt AC 416 ms 23644 KiB
34.txt AC 412 ms 23704 KiB
35.txt AC 414 ms 23608 KiB
36.txt AC 401 ms 23640 KiB
37.txt AC 410 ms 23900 KiB
38.txt AC 415 ms 23624 KiB
39.txt AC 414 ms 23456 KiB
4.txt AC 669 ms 64904 KiB
5.txt AC 264 ms 34740 KiB
6.txt AC 241 ms 28228 KiB
7.txt AC 591 ms 63896 KiB
8.txt AC 337 ms 32724 KiB
9.txt AC 480 ms 46604 KiB
s1.txt AC 56 ms 14212 KiB
s2.txt AC 56 ms 14176 KiB
s3.txt AC 54 ms 14248 KiB