hihocoder 1322:DFS

hihocoder 1322

判断是否构成树

题解:DFS简单粗暴

#include <bits/stdc++.h>
using namespace std;
int const N = 500 + 10;
int n,m;
vector<int>G[N];
bool vis[N];
void DFS(int u){
	vis[u] = true;
	for(int i=0;i<G[u].size();i++){
		int v = G[u][i];
		if(vis[v])		continue;
		DFS(v);
	}
}
int main(){
	ios::sync_with_stdio(false);
	int T;
	cin>>T;
	while(T--){
		cin>>n>>m;
		for(int i=1;i<=n;i++)	G[i].clear();
		for(int i=1;i<=m;i++){
			int x,y;
			cin>>x>>y;
			G[x].push_back(y);
			G[y].push_back(x);
		}
		if(m != n - 1){   //判断边和点是否构成关系
			cout<<"NO"<<endl;
			continue;
		}
		memset(vis,false,sizeof(vis));
		bool flag = true;
		DFS(1);
		for(int i=1;i<=n;i++)
			if(!vis[i])	flag = false;
		if(flag)	cout<<"YES"<<endl;
		else 		cout<<"NO"<<endl;
	}
}

 

posted @ 2019-02-10 12:53  月光下の魔术师  阅读(6)  评论(0)    收藏  举报