void bnb(int v){ if(v==n) { if(B < k) { B=k; saveColoring(); } return; } for(int i = 1 ; i <= min(k+1,B-1) ; ++i){ isInvalid=false; newColor=false; for(int j=0;j < (int)adj[v].size();++j) if(adj[v][j] < v && color[adj[v][j]]==i){ isInvalid=true; } if(isInvalid) continue; if(i==k+1) { k++; newColor=true; } color[v]=i; bnb(v+1); if(newColor) k--; } }