#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int v;
int q[20000];
int map[300][300], vis[300], val[300];
void bfs( int x )
{
int front, rear, a = 0, nx, next;
front = rear = 0;
q[front++] = x;
val[x] = 1;
vis[x] = 1;
while( front > rear )
{
nx = q[rear++];
if( val[nx] == 1 )
a = 0;
else
a = 1;
for( next = 0; next < v; next++ )
if( map[nx][next] && !vis[next] )
{
val[next] = a;
q[front++] = next;
vis[next] = 1;
}
}
}
int main()
{
int flag, e, i, x[300], y[300];
while( scanf( "%d", &v) && v )
{
memset( map, 0, sizeof(map) );
memset( vis, 0, sizeof(vis) );
scanf( "%d", &e );
for( i = 0; i < e; i++ )
{
scanf( "%d%d", &x[i], &y[i] );
map[x[i]][y[i]] = map[y[i]][x[i]] = 1;
}
bfs( x[0] );
flag = 1;
for( i = 0; i < e; i++ )
if( val[x[i]] == val[y[i]] )
{
flag = 0;
break;
}
if( flag )
printf( "BICOLORABLE.\n" );
else
printf( "NOT BICOLORABLE.\n" );
}
return 0;
}
UVA 10004
最新推荐文章于 2018-06-15 22:18:49 发布