# Social Circles, Friend Finder Algorithm in Java full implementation

**Description**

Read a list of friend relations A-B, A-D, C-A, C-D, ..., and determine friendship circles.2 Problem Statement These days, it seems that we expect computers to direct our social lives, even to the point of choosing our friends. Of course, as programmers, we get to implement these choice algorithms, as in this problem.

Given a \friend relation" { a set of pairs of people who designate each other as \friends"{ and a particular person (C, \the client") your algorithm is to select any specied number(N) of people who are not friends of C, but who are friends of friends of C. Specically, the algorithm picks those people who know the greatest numbers of C's friends. For example,

if N = 2, C is Jack, and the friend relation isJack/Mary Mary/Claire Jack/Tom Tom/Claire Jack/RichardTod/Richard Claire/Richard Jack/Jill Jill/June June/TodJill/Tod Jill/Peter Mary/Tom Richard/Tom Jill/Tom

the program would select Claire (who knows Jack's friends Mary, Tom, and Richard)and Tod (who knows Richard and Jill). Jack's other friends of friends are June and Peter(who both know Jill). The relationships between Jack's friends (such as Mary and Tom)are irrelevant. Implicitly, Jack is his own friend, so that he is not in the list of suggestions.The \friend" relation is symmetric: you are my friend i (if and only if) I am yours.

The input will consist of multiple sets of data in free format. Each set begins with aninteger, N, and a name (consisting of a string of non-whitespace characters), C. Therethen follows a sequence of an even number of names, each successive pair of which denotes a friend relationship. A given friend relationship will appear only one in the sequence (with either member rst). The implicit friendship of a person with himself will not be included.

The sequence terminates with two asterisks (separated by whitespace). For each input set, the output consists of a list of whitespace-separated names in alpha-betical order giving the N non-friends of C who are acquainted with the most friends of C. You may assume that there will always be at least N non-friends of C. In case too many people know the smallest qualifying number of friends, choose those that come earlier inalphabetical order. Thus, if N = 2 and Mike knows two of C's friends while Sam, Jill, andMary know one, then choose Jill and Mike.

ExampleInput:2 JackMary Claire Jack Tom Tom Claire Jack RichardJackMaryTod Richard Claire Richard Jack Jill Jill June June TodJill Tod Jill Peter Mary Tom Richard Tom Jill Tom* *3 JackMary Claire Jack Tom Tom Claire Jack RichardJackMaryTod Richard Claire Richard Jack Jill Jill June June TodJill Tod Jill Peter Mary Tom Richard Tom Jill Tom* *Output:Claire TodClaire June Tod

You'll get 1 file (8.4KB)