题目地址:点击打开链接
就是简单的BFS就可以了
C++代码:
#include <iostream> #include <queue> #include <cstring> using namespace std; const int maxsize = 210; int n; int graph[maxsize][maxsize]; int visieted[maxsize]; bool flag; void bfs() { visieted[0]=0; queue<int> qi; qi.push(0); while(!qi.empty()) { int temp=qi.front(); qi.pop(); for(int i=0;i<n;++i) { if(i!=temp&&graph[temp][i]==1) { if(visieted[i]==-1) { visieted[i]=1-visieted[temp]; qi.push(i); } else if(visieted[i]==visieted[temp]) { flag = false; return; } } } } } int main() { int l; while(cin>>n&&n) { cin>>l; int i; memset(graph,0,sizeof(graph)); memset(visieted,-1,sizeof(visieted)); int a,b; while(l--) { cin>>a>>b; graph[a][b]=graph[b][a]=1; } flag=true; bfs(); if(flag) cout<<"BICOLORABLE."<<endl; else cout<<"NOT BICOLORABLE."<<endl; } return 0; }
UVa10004 - Bicoloring,布布扣,bubuko.com
原文:http://blog.csdn.net/leizh007/article/details/21861679