题解 | 【模板】二分图结构Ⅰ-A ‖ 染色判定:DFS

【模板】二分图结构Ⅰ-A ‖ 染色判定:DFS

https://www.nowcoder.com/practice/f4b8d0481c7b4278b9b406b636e3c7db

#include<bits/stdc++.h>
using namespace std;

const int N=3e5+10;

struct Edge{
	int u,v;
	int next;
}edge[N*2];

int n,m,head[N],cnt;
int color[N];

void add(int u,int v){
	edge[++cnt].next=head[u];
	edge[cnt].u=u;
	edge[cnt].v=v;
	head[u]=cnt;
	return;
}

void bfs(int x){
	
	queue<int> q;
	bool f=false;
	color[x]=1;
	q.push(x);
	
	while(!q.empty()){
		int st=q.front();q.pop();
		
		for(int i=head[st];i!=0;i=edge[i].next){
			int to=edge[i].v;
			if(color[st]==1){
				if(color[to]==0){
					color[to]=2;
					q.push(to);
				}else if(color[to]==1){
					cout<<"NO"<<endl;
					return;
				}
			}else{
				if(color[to]==0){
					color[to]=1;
					q.push(to);
				}else if(color[to]==2){
					cout<<"NO"<<endl;
					return;
				}
			}
		}
	}
	
	cout<<"YES"<<endl;
	
	return;
}

void solve(){
	
	bfs(1);
	
	return;
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	
	cin>>n>>m;
	
	int u,v;
	for(int i=1;i<=m;i++){
		cin>>u>>v;
		add(u,v);
		add(v,u);
	}
	
	solve();
	
    return 0;
}


全部评论

相关推荐

点赞 评论 收藏
分享
开发转测第二人:没实习的话,两个项目吧,八股也要准备一下,这个时间点有点小晚了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务