PT07Y - Is it a tree

You are given an unweighted, undirected graph. Write a program to check if it's a tree topology.

Input

The first line of the input file contains two integers N and M --- number of nodes and number of edges in the graph (0 < N <= 10000, 0 <= M <= 20000). Next M lines contain M edges of that graph --- Each line contains a pair (u, v) means there is an edge between node u and node v (1 <= u, v <= N).

Output

Print YES if the given graph is a tree, otherwise print NO.

Example

Input:
3 2
1 2
2 3

Output:
YES

Added by:Thanh-Vy Hua
Date:2007-03-28
Time limit:0.5s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Languages:All except: ERL JS-RHINO
Resource:Co-author Amber

hide comments
2017-12-16 15:23:56
AC in one Go!!!
2017-12-12 15:58:49
AC in one GO!!
2017-11-14 08:15:54
My 50th!!
AC in one Go!!
Solved using Union-Find
2017-10-26 14:36:12
java people use input method other than scanner class it gives me one tle.
just use Adjacency List and dfs.
2017-10-22 10:24:57
It can also also be solved as follow:
Just check whether both edges you are taking as input is already present or not.
2017-10-19 13:02:25
Just Disjoint Set works quite well
2017-10-03 17:53:33
cool problem
2017-08-27 16:59:31
what if test cases contain self loops ??
even if we run a dfs and check if(m==n-1&&all nodes are visited) ..we print yes bt actually it should be no ri8 ??
can anyone clarify dis ??
2017-08-14 23:38:02
Run dfs only once. Then check whether all the vertices are visited and no of edges equals no of vertices minus one.
2017-08-14 13:10:27
bfs or dfs or union find.But you have to consider the disconnected graphs also, which are not trees.
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.