二分图

#include
#include

using namespace std;

vector G[1010];
int color[1010];
int V,E;

bool dfs(int x){
	for(int i = 0;i < G[x].size();i ++){
		if(color[x] == color[G[x][i]]){
			return false;
		}else{
			color[G[x][i]] = -color[x];	
		}
	}
	return true;
}
int main(){
	int a,b;
	int ans = 1;
	scanf("%d%d",&V,&E);
	for(int i = 1;i <= E;i ++){
		scanf("%d%d",&a,&b);
		G[a].push_back(b);
		G[b].push_back(a);
		
	}
	color[0] = 1;
	for(int i = 0;i < V;i ++){
		if(!dfs(i)){
			ans = 0;
			break;	
		}
	}
	if(1 == ans){
		printf("Yes\n");
	}else{
		printf("No\n");
	}
	return 0;
}

你可能感兴趣的:(挑战)