Submission #26559753


Source Code Expand

Copy
N = gets.to_i
M = 10**9+7
E = Array.new(N){{}}
$<.each{|ln|
a,b = ln.split.map{_1.to_i-1}
E[a][b] = nil
E[b][a] = nil
}
D = E.map(&:size)
C = lambda{|max|
num,dnm = [1,1],[1,1]
2.upto(max){|n|
num << num[-1]*n%M
dnm << M - dnm[M%n]*(M/n)%M #
}
1.upto(dnm.size-1){|n|
dnm[n] = dnm[n-1]*dnm[n]%M #
}
next lambda{|n,r|
num[n]*dnm[r]*dnm[n-r]%M
}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
N = gets.to_i
M = 10**9+7
E = Array.new(N){{}}
$<.each{|ln|
	a,b = ln.split.map{_1.to_i-1}
	E[a][b] = nil
	E[b][a] = nil
}
D = E.map(&:size)
C = lambda{|max|
	num,dnm = [1,1],[1,1]
	2.upto(max){|n|
		num << num[-1]*n%M
		dnm << M - dnm[M%n]*(M/n)%M # 謎
	}
	1.upto(dnm.size-1){|n|
		dnm[n] = dnm[n-1]*dnm[n]%M # 謎
	}
	next lambda{|n,r|
		num[n]*dnm[r]*dnm[n-r]%M
	}
}.call N

P = [nil]*N
Q = N.times.select{ D[_1]<2 }
while a = Q.pop
	pr,nd = 1,0
	E[a].each{|b,(pr2,nd2)|
		if pr2
			pr = pr*pr2*C[nd+nd2,nd]%M
			nd += nd2
		else
			P[a] = b
		end
	}
	break unless P[a]
	E[P[a]][a] = [pr,nd+1]
	Q << P[a] if 1 == D[P[a]] -= 1
end

Q << a
while a = Q.pop
	pr,nd = 1,0
	E[a].each{|b,(pr2,nd2)|
		pr = pr*pr2*C[nd+nd2,nd]%M
		nd += nd2
	}
	E[a].each{|b,(pr2,nd2)|
		next if b==P[a]
		E[b][a] = [pr*pr2.pow(M-2,M)*C[nd,nd2].pow(M-2,M)%M,nd-nd2+1]
		Q << b
	}
end

puts E.map{|bs|
	bs.values.inject([1,0]){|(pr,nd),(pr2,nd2)|
		next pr*pr2*C[nd+nd2,nd]%M,nd+nd2
	}[0]
}

Submission Info

Submission Time
Task F - Distributing Integers
User ds14050
Language Ruby (2.7.1)
Score 600
Code Size 1028 Byte
Status AC
Exec Time 1548 ms
Memory 101476 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 4
AC × 18
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt
All line_01.txt, line_02_shuffled.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06_shuffled.txt, random_07_shuffled.txt, random_08_shuffled.txt, random_09_shuffled.txt, random_10.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, star_01.txt, star_02_shuffled.txt
Case Name Status Exec Time Memory
line_01.txt AC 329 ms 33864 KB
line_02_shuffled.txt AC 373 ms 33880 KB
random_01.txt AC 1525 ms 84104 KB
random_02.txt AC 1532 ms 83912 KB
random_03.txt AC 1547 ms 83272 KB
random_04.txt AC 1543 ms 84048 KB
random_05.txt AC 1511 ms 83400 KB
random_06_shuffled.txt AC 1542 ms 84132 KB
random_07_shuffled.txt AC 1548 ms 84068 KB
random_08_shuffled.txt AC 1526 ms 84168 KB
random_09_shuffled.txt AC 1538 ms 84052 KB
random_10.txt AC 1538 ms 84104 KB
sample_01.txt AC 56 ms 13968 KB
sample_02.txt AC 56 ms 14156 KB
sample_03.txt AC 58 ms 14076 KB
sample_04.txt AC 57 ms 14128 KB
star_01.txt AC 1068 ms 101476 KB
star_02_shuffled.txt AC 1380 ms 101356 KB


2025-04-24 (Thu)
09:00:56 +00:00