1. 程式人生 > >模板:二分圖染色+判定

模板:二分圖染色+判定

vector 二分圖判定 一次 二分 color nbsp logs 如果 int

 1 //鄰接表dfs二分圖判定
 2 vector <int> G[N];
 3 int col[N];
 4 
 5 //頂點染色c,-c
 6 bool dfs(int v,int c){
 7     col[v]=c;
 8     for(int i=0;i<G[v].size();i++){
 9         int tmp=G[v][i];
10         if(col[tmp]==c) return false;
11         if(col[tmp]==0&&!dfs(tmp,-c)) return false;
12 } 13 return true; 14 } 15 16 //如果圖是連通的話,一次dfs就可以訪問所有的頂點. 17 void solve(){ 18 for(int i=0;i<V;i++){ 19 if(col[i]==0){ 20 if(!dfs(i,1)){ 21 cout<<"NO"<<endl; 22 return ; 23 } 24 } 25 } 26
cout<<"YES"<<endl; 27 }

模板:二分圖染色+判定