ZJNU 1333 - 第二题 blocks--中高级
因为放一个就需要判断一次,每一次跑一遍全图bfs显然是不现实的 又因为点只有三种,黑白无 所以可以用并查集优化 添加一个棋子就判断周围四个的组别情况 注意出现的情况与答案关系之间的判别 1 /* 2 Written By StelaYuri 3 */ 4 #include<stdio.h> 5 #include<memory.h> 6 int N,M,dx[4]={1,0,-1,0},dy[4]={0,1,0,-1},gp[250010]; 7 char cm[505][505]; 8 int findp(int p){ 9 return p==gp[p]?p:(gp[p]=findp(gp[p])); 10 } 11 int prime(int x,int y){ 12 return x>=0&&y>=0&&x<N&&y<N; 13 } 14 int main(){ 15 int i,j,X,Y,xx,yy,ans=0,g,d1,d2; 16 char C; 17 memset(cm,'.',sizeof cm); 18 for(i=0;i<250000;i++) 19 gp[i]=i; 20 scanf("%d%d",&N,&M); 21 for(i=0;i<M;i++){ 22 scanf("%*c%c%d%d",&C,&X,&Y); 23 ans++; 24 for(g=j