| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
蹭着时限过的感觉真不好有人也想感受这种不爽的感觉吗?
int R,C,cc[CMax],cl;
char map[NMax][NMax];
int way[WMax][3],Dep;
char *S,*T,color,color2;
void floodfill(int x,int y){
int x1[WMax],y1[WMax],top;top=1;x1[0]=x;y1[0]=y;
while (top){top--;x=x1[top];y=y1[top];
T[(x<<2)+y]=color2;
if (x && S[((x-1)<<2)+y]==color && T[((x-1)<<2)+y]!=color2)
x1[top]=x-1,y1[top]=y,top++;
if (x+1<R && S[((x+1)<<2)+y]==color && T[((x+1)<<2)+y]!=color2)
x1[top]=x+1,y1[top]=y,top++;
if (y && S[((x)<<2)+y-1]==color && T[((x)<<2)+y-1]!=color2)
x1[top]=x,y1[top]=y-1,top++;
if (y+1<C && S[((x)<<2)+y+1]==color && T[((x)<<2)+y+1]!=color2)
x1[top]=x,y1[top]=y+1,top++;
}
}
int dfs(int id){
char bak[NMax][NMax],vi[NMax][NMax],cc2[CMax];
int q;
if (id==Dep){
for (int i=0;i<R;i++)for (int j=0;j<C;j++)if (map[i][j])return 0;
return 1;
}
memset(vi,0,sizeof(vi));memset(cc2,0,sizeof(cc2));
memcpy(bak,map,sizeof(map));
q=0;
for (int i=0;i<R;i++)for (int j=0;j<C;j++){
if (!cc2[map[i][j]])q++;
cc2[map[i][j]]++;
}
if (q+id-(cc2[0]&&1)>Dep)return 0;
S=(char*)map;
for (int i=0;i<R;i++)for (int j=0;j<C;j++)if (!vi[i][j]){
T=(char*)vi;color=map[i][j];color2=1;
floodfill(i,j);
for (int k=0;k<cl;k++)if (!k || cc2[cc[k]]>=2){
way[id][0]=i;way[id][1]=j;way[id][2]=cc[k];
T=(char*)map;color=map[i][j];color2=cc[k];
floodfill(i,j);
if (dfs(id+1))return 1;
memcpy(map,bak,sizeof(map));
}
}
return 0;
}
int main()
{
char bak[NMax][NMax];
int x;
while (scanf("%d %d",&R,&C)!=EOF){
for (int i=0;i<CMax;i++)cc[i]=0;
for (int i=0;i<R;i++)for (int j=0;j<C;j++){
scanf("%d",&x);
map[i][j]=x;
cc[x]++;
}
memcpy(bak,map,sizeof(map));
cc[0]=0;cl=1;
for (int i=1;i<CMax;i++)if (cc[i]>=2)cc[cl++]=i;
for (Dep=0;Dep<=R*C;Dep++){
if (dfs(0))break;
}
printf("%d\n",Dep);
memcpy(map,bak,sizeof(map));
for (int i=0;i<Dep;i++){
printf("%d %d %d\n",way[i][0]+1,way[i][1]+1,way[i][2]);
}
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator