UVA 10004 - Bicoloring(DFS)

题目链接

好假啊,1Y,我本以为会超时的,看来数据小啊。。。。在经过各种压线之后,目测这个学期不会挂科,淡定,实习完,继续刷题!!!

 1 #include <stdio.h>

 2 #include <string.h>

 3 int p[201][201],o[201],n,z;

 4 void dfs(int x,int y)

 5 {

 6     int i;

 7     if(z) return ;

 8     o[x]  = y;;

 9     for(i = 0;i <= n;i ++)

10     {

11         if(p[x][i] )

12         {

13             p[x][i] = 0;

14             if(o[i] == 0)

15             {

16                 if(y == 1)

17                     dfs(i,2);

18                 else if(y == 2)

19                     dfs(i,1);

20             }

21             else if(o[i] == y)

22             {

23                 z = 1;

24                 break;

25             }

26         }

27     }

28     return ;

29 }

30 int main()

31 {

32     int i,sv,ev,m;

33     while(scanf("%d",&n)!=EOF)

34     {

35         if(n == 0)break;

36         z = 0;

37         memset(p,0,sizeof(p));

38         memset(o,0,sizeof(o));

39         scanf("%d",&m);

40         for(i = 1;i <= m;i ++)

41         {

42             scanf("%d%d",&sv,&ev);

43             p[sv][ev] = 1;

44             p[ev][sv] = 1;

45         }

46         dfs(0,1);

47         if(z) 

48             printf("NOT BICOLORABLE.\n");

49         else 

50             printf("BICOLORABLE.\n");

51     }

52     return 0;

53 }

 

你可能感兴趣的:(color)