#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include <memory.h>
#include <queue>
#include <algorithm>
using namespace std;
int map[305][305] , n , m ,a , b ,c,color[305];
void init(){
memset(map , 0 , sizeof(map));
memset(color , -1 , sizeof(color));
}
struct T{
int id , fa , flag;
};
queue<T> q;
T now , temp;
bool bfs(){
while(!q.empty()) q.pop();
now.id = 0;
now.flag = 0;
color[now.id] = 0;
q.push(now);
while(!q.empty()){
now = q.front();
q.pop();
for(int i = 0 ; i < n ; i ++){
if(map[now.id][i]){
if(color[i] == -1){
color[i] = 1 - now.flag;
temp.flag = color[i];
temp.id = i;
q.push(temp);
}
else{
if(color[i] == now.flag) return false;
}
}
}
}
return true;
}
int main(){
while(~scanf("%d" , &n) && n){
scanf("%d" , &m);
init();
for(int i = 0 ; i < m ; i ++){
scanf("%d%d" , &a , &b);
map[a][b] = 1;
}
if(bfs()) printf("BICOLORABLE.\n");
else printf("NOT BICOLORABLE.\n");
}
return 0;
}
uVA 10004 Bicoloring
最新推荐文章于 2018-04-08 21:11:11 发布