http://ac.jobdu.com/problem.php?id=1109
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
int a[1001][1001];
int visited[1001];
void dfs(int start,int n)
{
int j;
visited[start] = 1;
for(j=0;j<n;j++)
if(a[start][j] == 1 && visited[j] == 0)
dfs(j,n);
}
int main()
{
int x,y,n,m;
int i,j,flag;
while(scanf("%d %d",&n,&m) != EOF && (n != 0))
{
flag = 1;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j] = 0;
for(i=0;i<n;i++)
visited[i] = 0;
for(i=1;i<=m;i++)
{
scanf("%d %d",&x,&y);
a[x-1][y-1] = 1;
a[y-1][x-1] = 1;
}
dfs(x-1,n);
for(i=0;i<n;i++)
{
if(visited[i] == 0)
{
flag = 0;
break;
}
}
if(flag == 1)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}