ZOJ2740
题目的意思就是给出一些边,问这些边组成的图是否是一棵树,就是无环并且全连通
There will be at most one channel between two endpoints, and there is no channel connects an endpoint to itself.
所以m=n-1
#include<cstdio>
#include<cstring>
#include<vector>
#include<iostream>
using namespace std;
vector<int>adj[1002];
int n,m;
bool f[1002];
void dfs(int v)
{
f[v]=1;
for(int i=0;i<adj[v].size();i++)
{
if(f[adj[v][i]])continue;
dfs(adj[v][i]);
}
}
int main()
{
int i,j;
while(~scanf("%d%d",&n,&m)&&(n+m))
{
if(m!=n-1)
{
while(m--)scanf("%d%d",&i,&j);
printf("No\n");
continue;
}
int a,b;
for(i=1;i<=n;i++)adj[i].clear();
while(m--)
{
scanf("%d%d",&a,&b);
adj[a].push_back(b);
adj[b].push_back(a);
}
memset(f,0,sizeof(f));
dfs(1);
for(i=1;i<=n;i++)
{
if(f[i]==0)break;
}
if(i>n)printf("Yes\n");
else printf("No\n");
}
return 0;
}