#include #define int long long using namespace std; struct node{ int to,next; }a[200010]; int head[200010],in[10010],cnt,ans,x,y; bool f[10010]; char c[1010][1010]; queue q; priority_queue > que; void add(int u,int v) { a[++cnt].to=v; a[cnt].next=head[u]; head[u]=cnt; } void add_edge(int u,int v) { in[u]++; in[v]++; //cout<>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>c[i][j]; if(c[i][j]=='w') x++; else if(c[i][j]=='b') y++; } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(i+1<=n&&c[i+1][j]!='.'&&c[i][j]!='.'&&c[i+1][j]!=c[i][j]) add_edge((i-1)*m+j,i*m+j);//,cout<1) { que.push({0,i}); while(!que.empty()) { int u=que.top().second; que.pop(); if(!in[u]) continue; for(int i=head[u];i;i=a[i].next) { int v=a[i].to; //cout<