close

#include <stdio.h>
#include <String.h>

int edge[205][205];

int DFS( int p[], int i, int n, int color )
{
  int change = color ^ 3;
  int answer = 1;
  if ( p[i] ) {
    if ( p[i] != color )
      return 0;
    if ( p[i] == color )
      return 1;
  }
  p[i] = color;
  int j;
  for (j = i + 1 ; j < n ; j++ )
    if ( edge[i][j] )
      answer &= DFS( p, j, n, change );
  return answer;
}

int main()
{
  int n, l, n1, n2;
  int p[205];

  while ( scanf( "%d", &n ) != EOF && n != 0 ) {
    scanf( "%d", &l );
    memset( p, 0, sizeof(p) );
    memset( edge, 0, sizeof(edge) );
    int i;
    for (i = 0 ; i < l ; i++ ) {
      scanf("%d%d", &n1, &n2 );
      edge[n1][n2] = 1;
      edge[n2][n1] = 1;
    }
    if ( DFS( p, 0, n, 1 ) )
      printf( "BICOLORABLE.\n" );
    else
      printf( "NOT BICOLORABLE.\n" );
  }
  return 0;
}

 

arrow
arrow
    文章標籤
    UVa C code
    全站熱搜
    創作者介紹
    創作者 蒼雨 的頭像
    蒼雨

    日常雜物間

    蒼雨 發表在 痞客邦 留言(0) 人氣()