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 }

浙公网安备 33010602011771号