static void Main(string[] args) { FriendGraph friendGraph = new FriendGraph(); var readLine = Console.ReadLine(); while (readLine != String.Empty) { readLine = readLine.Trim(); var spliter = readLine.IndexOf(":", StringComparison.Ordinal); var person = readLine.Substring(0, spliter); var friends = readLine.Substring(spliter + 2, readLine.Length - 3).Split(','); //friends = friends.Split(',').ToString(); if (friendGraph.PersonGraph.Count == 0) { var rootPerson = new Person(person); foreach (var friend in friends) { var friendNode = new Person(friend.ToString()); friendNode.IsFriendOf(rootPerson); friendGraph.PersonGraph.Add(friend.ToString(), friendNode); } friendGraph.PersonGraph.Add(person, rootPerson); } else { Person rootPerson; if (!friendGraph.PersonGraph.TryGetValue(person, out rootPerson)) { rootPerson = new Person(person); } foreach (var friend in friends) { Person friendPerson; if (!friendGraph.PersonGraph.TryGetValue(friend.ToString(), out friendPerson)) { friendPerson = new Person(friend.ToString()); friendPerson.IsFriendOf(rootPerson); friendGraph.PersonGraph.Add(friend.ToString(), friendPerson); } else { friendPerson.IsFriendOf(rootPerson); ////friendGraph.PersonGraph.Add(friend.ToString(), friendPerson); } } friendGraph.PersonGraph[person] = rootPerson; } readLine = Console.ReadLine(); } friendGraph.Bfs("A"); Console.Read(); }
public void IsFriendOf(Person friend) { this.Friends.Add(friend); friend.Friends.Add(this); }