首页 > 代码库 > 黑白染色
黑白染色
#include <iostream> using namespace std; #define SIZE 100 int map[SIZE][SIZE]; int queue[SIZE]; int color[SIZE]; int visit[SIZE]; int m,n; int tab; int ans; int temp; int x,y; void BFS(int step) { int head = 0; int tail = 1; queue[head] = step; color[step] = 1; visit[step] = 1; while(head != tail) { temp = queue[head]; head++; for(int j=1;j<=m;j++) { tab = 0; if(map[temp][j]==1) { if(color[j]==0) { color[j] -= color[temp]; visit[j] = 1; queue[tail] = j; tail++; } else if(color[j] == color[temp]) { tab = 1; ans = -1; break; } } } if(tab==1) break; } } int main() { freopen("input.txt","r",stdin); int ntc; cin>>ntc; for(int i=0;i<ntc;i++) { ans = 0; cin>>m; cin>>n; for(int i=0;i<n;i++) { cin>>x; cin>>y; map[x][y] = 1; map[y][x] = 1; } for(int i=1;i<=m;i++) { if(visit[i]==0) BFS(i); if(tab==1) break; } if(ans==0) { for(int i=0;i<=m;i++) { if(color[i] == -1) ans++; } cout<<ans<<endl; for(int i=0;i<=m;i++) { if(color[i] == -1) cout<<i; } cout<<endl; } else cout<<ans<<endl; } return 0; } input: 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
黑白染色
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。