首页 > 代码库 > ADV-黑白染色
ADV-黑白染色
只写了进行一次的代码,和题目的差异就是少了输入可以测试几个样例。
#include<stdio.h> int queue[1000]; int color[100]; int book[100]; int n,m; int ans; int map[100][100]; int tab; void bfs(int step){ int head=0,rear=0; queue[rear++]=step; color[step]=1; book[step]=1; while(head<rear){ int temp=queue[head++]; for(int i=1;i<=n;i++){ tab=0; if(map[temp][i]==1){ if(color[i]==0){ color[i]-=color[temp]; queue[rear++]=i; book[i]=1; } else if(color[i]==color[temp]){ tab=1; ans=-1; break; } } } if(tab) break; } } int main(){ scanf("%d%d",&n,&m); ans=0; int x,y; for(int i=1;i<=m;i++){ scanf("%d%d",&x,&y); map[x][y]=1; map[y][x]=1; } for(int i=1;i<=n;i++){ if(book[i]==0) bfs(i); if(tab) break; } if(ans==0){ for(int i=1;i<=n;i++){ if(color[i]==-1) ans++; } printf("%d\n",ans); for(int i=1;i<=n;i++){ if(color[i]==-1) printf("%d ",i); } printf("\n"); } else printf("%d\n",ans); }
测试用例 9 //本代码没有这个次数输入,每次只能一次 5 5 1 2 2 3 3 4 4 5 5 1 6 6 1 2 2 3 3 4 4 5 5 6 6 1 4 5 1 2 2 3 3 4 4 1 4 2 4 6 1 2 2 3 3 4 4 1 4 2 1 3 4 4 1 2 2 3 3 4 4 1 5 6 1 2 1 4 2 3 2 5 3 4 5 4 12 13 1 2 1 4 2 3 3 4 4 5 5 6 6 7 7 8 8 5 5 9 4 10 9 10 11 12 5 4 1 4 1 3 3 5 2 5 7 5 1 4 1 3 3 5 2 5 6 7 测试结果 -1 3 2 4 6 -1 -1 2 2 4 2 2 4 6 2 4 6 8 9 12 3 2 3 4 4 2 3 4 7
ADV-黑白染色
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。