fredo-and-his-birthday-gift-4

It was Fredo's birthday yesterday. He got a simple graph  of N vertices and M edges as one of the birthday gifts. He has been bragging about his gift to all his friends. One of his friends asked him to do the following task on the graph:For each of the vertices in the graph, find the maximum length simple path ending at that vertex. Being unable to solve it himself, he asks you for help. Help Fredo!Note: Length of a simple path= number of edges in the path.
A simple path is a path in a graph which does not have repeating vertices.

Input Format:

First line contains an integer T denoting the number of test cases.
First line of each test case consists of  two space separated integers denoting N and M and the following M lines consist of two space separated integers X and Y denoting there is an edge between vertices X and Y.  

Output Format:

For each test case, 
print for each vertex(starting from vertex 1) , length of the maximum length simple path ending at that vertex.

Constraints:
 1 ≤ T ≤ 10 
 1 ≤ N ≤ 15 
 0 ≤ M < N*(N-1)/2  
 1 ≤ X, Y ≤ N 

SAMPLE INPUT
2
3 0
4 3
1 2
2 3
2 4

SAMPLE OUTPUT
0 0 0
2 1 2 2

Explanation

In the first case, there are no edges connecting the vertices, so the length of maximum length simple path = 0 for each vertex. 
In the second case,
Simple paths ending at vertex 1: 4-2-1, 4-3-1, 2-1, so answer = 2
Simple paths ending at vertex 2: 1-2, 3-2, 4-2, so answer = 1
Simple paths ending at vertex 3: 1-2-3, 2-3, 4-2-3, so answer = 2
Simple paths ending at vertex 4: 1-2-4, 3-2-4, 2-4, so answer =  2

Source: hackerearth | Difficulty: MEDIUM
Tags: Dynamic programming

Bit manipulation

Graph algorithms


Solutions: