結果

問題 No.2291 Union Find Estimate
ユーザー 👑 p-adicp-adic
提出日時 2023-05-10 02:33:02
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
AC  
実行時間 1,636 ms / 2,000 ms
コード長 740 bytes
コンパイル時間 101 ms
コンパイル使用メモリ 12,672 KB
実行使用メモリ 35,896 KB
最終ジャッジ日時 2024-05-04 19:59:03
合計ジャッジ時間 6,439 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 34 ms
10,880 KB
testcase_01 AC 34 ms
10,880 KB
testcase_02 AC 1,636 ms
10,880 KB
testcase_03 AC 623 ms
35,896 KB
testcase_04 AC 32 ms
10,880 KB
testcase_05 AC 32 ms
10,880 KB
testcase_06 AC 31 ms
11,008 KB
testcase_07 AC 31 ms
10,880 KB
testcase_08 AC 46 ms
10,880 KB
testcase_09 AC 53 ms
10,880 KB
testcase_10 AC 190 ms
10,880 KB
testcase_11 AC 242 ms
11,008 KB
testcase_12 AC 363 ms
10,880 KB
testcase_13 AC 165 ms
16,136 KB
testcase_14 AC 440 ms
11,008 KB
testcase_15 AC 545 ms
23,348 KB
testcase_16 AC 440 ms
12,160 KB
testcase_17 AC 155 ms
12,160 KB
testcase_18 AC 150 ms
12,160 KB
testcase_19 AC 188 ms
10,880 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

I,J,R,O=input,int,range,print
X=I().split()
W,H,N,c=J(X[0]),J(X[1]),[str(i) for i in R(10)],0
p,a,w=[j for j in R(W)],{j for j in R(W)},[-1]*W
def r(i):
	m=p[i]
	while i!=m:
		p[i]=i=p[m]
		m=p[i]
	return i
def g(i,j):
	i=r(i)
	if p[i]!=r(j):
		p[i]=r(j)
		a.remove(i)
for h in R(H):
	if c:O(0)
	else:
		Q,D=I(),{}
		for j in R(W):
			q,s,t=Q[j],1,r(j)
			if q!='?':
				for n in R(10):
					if q==N[n]:
						if w[t]<0:w[t]=n
						elif w[t]!=n:c=1
						s=0
						break
				if s:
					if q in D:
						d=D[q]
						if w[t]<0:w[t]=w[d]
						elif w[d]<0:w[d]=w[t]
						elif w[d]!=w[t]:c=1
						if t!=d:
							g(t,d)
							D[q]=r(t)
					else:D[q]=t
		if c:O(0)
		else:
			e=0
			for j in a:
				if w[j]<0:e+=1
			O(pow(10,e,998244353))
0