blob: c5e53ded3bb154255b339557a1ab86b1757c3a79 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#!/usr/bin/env ruby
def group_members(p)
group = [p]
visited = []
queue = [p]
until queue.empty? do
here = queue.shift
visited << here
$pipes[here].each do |p|
group << p
queue << p unless visited.include?(p)
end
end
return group.uniq
end
input = $stdin.readlines.map(&:chomp)
$pipes = []
input.each do |line|
me, them = line.split(' <-> ')
me = me.to_i
them = them.split(', ').map(&:to_i)
$pipes[me] = [] if $pipes[me].nil?
them.each do |p|
$pipes[me] << p
end
end
procs = (0...$pipes.length).to_a
groups = 0
until procs.empty? do
agroup = group_members(procs.first)
groups += 1
procs -= agroup
end
puts groups
|