Given a graph with 'V' vertices numbered from 0 to 'V' - 1 and 'E' edges. Determine if it is a tree or not?
The first line of input contains two integers 'E' and 'V', separated by a single space. They denote the total number of edges and vertices respectively.
From the second line onwards, the next 'V' lines represent an edge between the two vertices.
Every edge is represented by two vertices(u, v) that share an edge between them. The values of the vertices would again be separated by a single space.
Output Format :
The only line of output prints 'True' if the given graph is a tree, otherwise print 'False'.
1 < 'V' <= 10^5
0 <= 'E' <= min(10^5, V*(V-1)/2)
0 <= u, v <= V-1
Time Limit: 1 sec
3 2
0 1
1 2
True
We clearly can see that it is a tree since it satisfies the property of a tree.
3 3
0 1
1 2
0 2
False
As we can see that it is not a tree since it doesn't satisfy the property of a tree.
A graph is a tree if it is acyclic and connected.
A graph is a tree if the following two conditions are satisfied:
Algorithm for checking cycle in Graph.
O(V+E), where V is the number of vertices and E is the number of Edges.
Through DFS, we traverse every vertex at max once and every edge at max once. Therefore the net time complexity is O(V+E).
O(V+E), where V is the number of vertices and E is the number of Edges.
As we are using an adjacency list.