using System.Collections;
using System.Collections.Generic;
public static void Main()
Console.WriteLine("Running");
var org = new OrganizationalStructure();
org.Add(10, "Sharilyn Gruber", -1);
org.Add(7, "Denice Mattice", 10);
org.Add(3, "Lawana Futrell", -1);
org.Add(34, "Lissette Gorney", 7);
org.Add(5, "Lan Puls", 3);
public class OrganizationalStructure{
Dictionary<int, Employee> employees = new Dictionary<int, Employee>();
public void Add(int employeeId, string name, int managerId)
employees.Add(employeeId, new Employee { EmployeeId = employeeId, Name = name, ManagerId = managerId });
public void Remove (int employeeId)
employees.Remove(employeeId);
public void Move (int employeeId, int managerId)
Employee employee = new Employee();
if (employees.TryGetValue(employeeId, out employee))
employee.ManagerId = managerId;
employees[employeeId] = employee;
public int Count (int managerId)
var managerSet = GetManagerSet();
Console.WriteLine(managerSet[managerId].Count());
return managerSet[managerId].Count();
var managerSet = GetManagerSet();
private Dictionary<int, List<Employee>> GetManagerSet()
Dictionary<int, List<Employee>> managerSet = new Dictionary<int, List<Employee>>();
foreach (var employee in employees.Values)
if (managerSet.ContainsKey(employee.ManagerId))
managerSet[employee.ManagerId].Add(employee);
managerSet.Add(employee.ManagerId, new List<Employee> { employee });
public int EmployeeId { get; set; }
public string Name { get; set; }
public int ManagerId { get; set; }
public string ToString(int trailingSpaces)
for (int i = 0; i < trailingSpaces; i++)
return spaces + this.ToString();
public override string ToString()
return Name + " [" + EmployeeId + "]";