-
-
Save AndroidKitKat/6253c55be0bf899543c0ff7db565015c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# frozen_string_literal: true | |
require 'set' | |
# User class | |
class User | |
def initialize(uid) | |
@id = uid | |
@associates = [] | |
end | |
attr_reader :id | |
attr_reader :associates | |
def add_assoc(user) | |
@associates.push(user) | |
end | |
end | |
def bfs_iter(user_hash, vertex) | |
frontier = [] | |
visited = Set[] | |
frontier.push(vertex) | |
until frontier.empty? | |
vertex = frontier.slice!(0) | |
next if visited.include?(vertex) | |
visited.add(vertex) | |
user_hash[vertex].each do |u| | |
frontier.push(u) | |
end | |
end | |
return visited | |
end | |
def build_assoc(edges) | |
user_array = [] | |
user_set = Set[] | |
user_hash = {} | |
# figure out how many memebrs we have | |
edges.each do |edge| | |
edge.each do |member| | |
user_set.add(member) | |
end | |
end | |
user_set.each do |uid| | |
uuid = User.new(uid) | |
user_array.push(uuid) | |
end | |
edges.each do |assoc| | |
user_array[assoc[0] - 1].add_assoc(assoc[1]) | |
user_array[assoc[1] - 1].add_assoc(assoc[0]) | |
end | |
# build hash? | |
user_array.each do |user| | |
user_hash[user.id] = user.associates | |
end | |
puts bfs_iter(user_hash, 1) | |
# # my reference | |
# user_hash.each do |uid, assocs| | |
# # do w/e | |
# end | |
end | |
nverts = nil | |
nedges = nil | |
edges = [] | |
STDIN.each do |line| | |
line = line | |
if nverts.nil? | |
nverts = line.chomp.to_i | |
elsif nedges.nil? | |
nedges = line.chomp.to_i | |
next | |
end | |
unless nverts.nil? || nedges.nil? | |
# grab edges | |
edges.push(line.split(' ').map(&:to_i)) | |
# clear vars | |
end | |
next if edges.length != nedges | |
# function call | |
build_assoc(edges) | |
# clear vars | |
edges.clear | |
nverts = nil | |
nedges = nil | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment