Amazon Online Assessment (OA) - Shopping Patterns

A Company is trying to understand customer shopping patterns and offer items that are regularly bought together to new customers. Each item that has been bought together can be represented as an undirected graph where edges join often bundled products. A group of n products is uniquely numbered from 1 of product_nodes. A trio is defined as a group of three related products that all connected by an edge. Trios are scored by counting the number of related products outside of the trio, this is referred as a product sum.

Given product relation data, determine the minimum product sum for all trios of related products in the group. If no such trio exists, return -1.

Input

The input to the function/method consists of four arguments:

int products_nodes: the total number of products

int products_edges: the total number of edges representing related products

int products_from[products_nodes]: each element is a node of one side of an edge.

int products_to[products edges]: each products_to[i] is a node connected to products_from[i]

Output

int: the minimum product sum for all trios of related products in the group. If no such trio exists, return -1.

Constraints

  • 1 <= products_nodes <= 500
  • 1 <= products_edges <= min(500, (products_nodes * (products_nodes - 1)) / 2)
  • 1 <= products_from[i], products to[i] <= products_nodes
  • products_from[i] != products_to[i]

Examples

Example 1:

Input:

products_nodes = 6

`products_edges = 6

products_from = [1, 2, 2, 3, 4, 5]

products_to = [2, 4, 5, 5, 5, 6]

ProductRelated Products
12
21,4,5
35
42,5
52,3,4,6
65

A graph of n = 6 products where the only trio of related products is (2, 4, 5).

ProductOutside ProductsWhich Products Are Outside
211
40
523,6

In the diagram above, the total product score is 1 + 0 + 2 = 3 for the trio (2, 4, 5).

Output: 3

Example 2:

Input:

products_nodes = 5

products_edges = 6

products_from = [1, 1, 2, 2, 3, 4]

products_to = [2, 3, 3, 4, 4, 5]

Output: 2
Explanation:

There are two possible trios: {1,2,3} and {2,3,4}

The score for {1,2,3} is 0 + 1 + 1 = 2.

The score for {2,3,4} is 1 + 1 + 1 = 3.

Return 2.

Try it yourself

Solution