二分图染色法匹配板子

集合A的点染色成1,集合B的点染色成2
注意dfs返回bool

vector<int>e[maxn];
int color[maxn];
bool dfs(int u,int res){
	color[u]=res;
	for(int v:e[u]){
		if(!color[v]){
			if(dfs(v,3-res))return true;
		}
		else{
			if(color[v]==res)return true;
		}
	}
	return false;
}
void solve(){
	int n,m;cin>>n>>m;
	for(int i=1;i<=m;i++){
		int u,v;cin>>u>>v;
		e[u].pb(v);e[v].pb(u);
	}
	bool ok=true;
	for(int i=1;i<=n;i++){
		if(!color[i]){
			if(dfs(i,1)){
				ok=false;	
			}
		}
	}
	if(ok){
		cout<<"Yes"<<endl;
	}else{
		cout<<"No"<<endl;
	}
}
posted @ 2025-03-16 17:07  Marinaco  阅读(7)  评论(0)    收藏  举报
//雪花飘落效果