标签:cin blank .com opened png pen event tle info
题意:判断此图是否为二分图(染色法,相邻两点不同色)
AC代码:
1 /***********************************************/ 2 3 int co[250]; 4 5 struct node{ 6 int v; 7 node(){} 8 node(int _v):v(_v){} 9 }; 10 vector<node>G[250];//邻接表法 11 12 int fff=0; 13 14 void dfs(int now,int pre) 15 { 16 if(~co[now]) 17 { 18 if(co[pre]!=0) co[now]=-co[pre]; 19 else co[now]=1;//头结点染色 20 //cout<<"co"<<G[now].size()<<endl; 21 for(int i=0;i<G[now].size();i++) 22 { 23 if(fff==0 && G[now][i].v!=pre) 24 dfs(G[now][i].v,now); 25 } 26 } 27 28 else{//染过 29 if(co[now]==co[pre]){ 30 fff=1; 31 } 32 } 33 34 } 35 36 int main() 37 { 38 int n,m; 39 while(cin>>n && n) 40 { 41 fff=0; 42 mem0(G); 43 cin>>m; 44 for(int i=1;i<=m;i++){ 45 int a,b; 46 cin>>a>>b; 47 G[a].push_back(node(b)); 48 G[b].push_back(node(a)); 49 } 50 mem0(co); 51 dfs(0,0); 52 //for(int i=0;i<n;i++) cout<<co[i]<<"tt"; 53 if(fff){ 54 cout<<"NOT BICOLORABLE."<<endl; 55 } 56 else cout<<"BICOLORABLE."<<endl; 57 } 58 return 0; 59 } 60 61 /* 62 3 63 3 64 0 1 65 1 2 66 2 0 67 3 68 2 69 0 1 70 1 2 71 9 72 8 73 0 1 74 0 2 75 0 3 76 0 4 77 0 5 78 0 6 79 0 7 80 0 8 81 0 82 83 */
标签:cin blank .com opened png pen event tle info
原文地址:https://www.cnblogs.com/liuyongliu/p/10319379.html