题目地址:点击打开链接
就是简单的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;
}