首页 > 代码库 > 黑白传染
黑白传染
#include <iostream> using namespace std; struct chess{ int x; }; int color[1000]={0}; int maxnum; int data[1000][1000]={0}; chess p[1000]; int flag; void bfs(int n); int main() { freopen("input.txt","r",stdin); int n; int pair; int x,y; while(scanf("%d",&n)!=EOF) { cin >>pair; maxnum=0; for(int i=1;i<=n;i++) color[i]=0; for(int i=1;i<=n;i++) for(int j=0;j<n;j++) data[i][j]=0; for(int i=0;i<pair;i++) { cin >>x; cin >>y; data[x][y]=1; data[y][x]=1; } bfs(n); if(flag==1) maxnum=-1; else { for(int i=1;i<=n;i++) { if(color[i]==1) { maxnum++; cout <<i<<" "; } } cout <<endl; } cout <<maxnum<<endl; } return 0; } void bfs(int n) { int front=0; int rear=0; p[rear++].x=1; color[p[front].x]=1; while(rear>front) { flag=0; int nx=p[front].x; for(int i=1;i<=n;i++) { if(data[nx][i]==1) { if(color[i]==0) { color[i]-=color[nx]; p[rear++].x=i; } else if(color[nx]==color[i]) { flag=1; break; } } } if(flag==1) break; front++; } }
黑白传染
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。