Advertisement blocking software were detected ;( Please add this webpage to whitelist.

PT07Y - Is it a tree

no tags 

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.166s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel Pentium G860 3GHz)
Languages:All except: ERL JS
Resource:Co-author Amber

hide comments
Aman Agarwal: 2015-05-26 10:42:53

1st question of graph.. :)

anksin: 2015-05-24 18:01:15

Just one graph traversal, no need to apply union find!!!!

pk: 2015-05-23 08:29:50

AC in 2nd go... union find algorithm is easy... just a few few line of code... :)

Rakend Chauhan: 2015-05-22 15:54:41

maintaining a proper visited array is enough to solve this problem

rpc1: 2015-05-19 22:37:29

@Pavan Thangella: You got lucky! There is one instance in this problem so you had a 50% change of getting it right. There is no way around having to do a bfs/dps. You have to search in any case to check the connectivity of the graph. See "http://en.wikipedia.org/wiki/Connectivity_(graph_theory)#Computational_aspects" for more info.

OneMoreError: 2015-05-11 14:06:24

my first bfs :)

jasongog: 2015-04-15 17:03:05

I used:
#include<map>
#include<iostream>
using namespace std;

int main()
{
map<int,int> Links;
int n,m,Parent,Child;

cin>>n>>m;
if(m!=n-1)
{
cout<<"NO"<<endl;
return 0;
}
while(m!=0)
{
m--;
cin>>Parent>>Child;


if(Links[Child]!=0)
{
if(Links[Parent]!=0)
{
cout<<"NO"<<endl;
return 0;
}
Links[Parent]=Child;
}
else
Links[Child]=Parent;

}
cout<<"YES"<<endl;

return 0;
}
didn't work..

Pavan Thangella: 2015-04-14 02:33:19

No need of any graph algorithms. Maintain a visited array is enough.

parmeet bhatia: 2015-03-28 13:32:50

Do not assume connected graph (one connected component). I got one WA because of that.

Harish Reddy Kolanu: 2015-02-18 14:56:43

Try using union find algorithm
executes in 0.00