|
|
|
Sample Problem 2: Social Network
This problem is an is an example of a more difficult problem, which
involves abstractions such as graph algorithms:
You are maintaining a social network site, and your task is to verify
whether a site member is allowed to access the page of another site
member. The members have defined their friendship relations, and they
allow different types of access, some only to direct friends, some to
friends of friends (and friends of friends of friends, and so on),
which are called indirect friends.
Input Description
The input starts with a positive integer n, which is the number of
members of the site. This line is followed by a line containing the
string "Friendships:", followed by a list of name pairs, each
describing a friendship relation.
The list of friendships is followed by an empty line, and a line
containing the string "Queries:", which is followed by queries, each
containing two member names A and B, for which you need to check
whether A has permissions to access the B's information.
Member names do not contain white-space characters.
Output Description
For each query in the input, where A and B are the names in the query,
produce one line of output, which can be one of the following three
lines:
direct access
indirect access
no access allowed
depending on whether A is a direct friend of B, indirect friend, or
neither of those.
Sample Input
8
Friendships:
Alice Bob
Bob Charlie
Charlie Dong
Dong Eman
Eman Bob
Sidney Henrik
Henrik Alex
Queries:
Bob Eman
Sidney Alex
Alex Charlie
Sample Output
direct access
indirect access
no access allowed
|