Woburn Challenge 2017-18 Round 3 - Senior Division

The social network Google+ has
users, with user IDs from
to
. Each pair of distinct users
are either friends with one another, or not.
You're given an grid of values
, with
being the number of mutual friends which users
and
have
in common. This corresponds to the number of other users who are
friends with both
and
. Note that it does not depend on whether
or not
and
are friends with one another.
for each pair of users
and
,
is considered to be
for
each user
.
Given the above information, you'd like to guess which users are friends
with one another. If there exists a valid set of friendships which
result in the given grid of mutual friend counts, then please output the
number of friendships , followed by
lines each describing one of
the friendships (with
integers, the IDs of the two users involved in
the friendship). No two friendships should involve the same unordered
pair of users. If there are multiple valid sets of friendships, you may
output any of them. If there are no valid sets of friendships, output
Impossible
instead.
Subtasks
In test cases worth of the points,
.
Input Specification
The first line of input consists of a single integer, .
lines follow, the
-th of which consists of integers,
, for
.
Output Specification
Either the string Impossible
, or integer
followed by
lines, the
-th of which contains
integers describing the
-th
friendship.
Sample Input 1
5
0 0 0 1 2
0 0 2 0 0
0 2 0 0 0
1 0 0 0 1
2 0 0 1 0
Sample Output 1
5
1 2
2 5
5 3
3 1
2 4
Sample Input 2
3
0 1 1
1 0 0
1 0 0
Sample Output 2
Impossible
Sample Explanations
In the first case, one valid set of friendships is indicated in the
sample output. For this set, users
and
have exactly
mutual friends
(users
and
) as required, users
and
have exactly
mutual friend
(user
) as required, and so on. Note that there exist other outputs
which would also be accepted. For example, the friendship between users
and
could be replaced with a friendship between users
and
, the
friendships could be outputted in any order, and the users in each
friendship could be swapped.
In the second case, no set of friendships amongst users would result
in the required grid of mutual friend counts.
Comments