J. Anti-merge
题意增加了思维的难度。 虽然看着像之前做的二分图,但本质上就是个染色问题,stl容器的使用更易处理这个问题。 思维难点在于:我只需要一种类型的标记就可防止相邻相同类型的格子避免合并。 ans[0]记录每轮最少需要的染色次数
#include
using namespace std;
const int inf=0x3f3f3f3f;
const int N=505;
int n,m,a[N][N],types;
int dx[5]={1,0,-1,0};
int dy[5]={0,1,0,-1};
vectorans[5];
int color[N][N];
bool check(int i,int j)
{
int k1=0,k2=0;
if(i-1>=1&&a[i-1][j]==a[i][j]) k1=1;
if(j-1>=1&&a[i][j-1]==a[i][j]) k2=1;
if(k1||k2) return 1;
return 0;
}
void dfs(int x,int y,int col)
{
color[x][y]=col;
ans[col].push_back({x,y});
for(int i=0;i=1&&nx=1&&ny>n>>m;
for(int i=1;ia[i][j];
for(int i=1;i
关注
打赏