蒟蒻50分求助!
  • 板块P5877 棋盘游戏
  • 楼主Hisy
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/12/21 21:41
  • 上次更新2023/12/22 11:23:50
查看原帖
蒟蒻50分求助!
922691
Hisy楼主2023/12/21 21:41
#include<cstdio>
inline bool isdigit(char charactor){
	return ('0'<=charactor&&charactor<='9');
};
inline int scan(void){
	int result=0,minus=1;
	char got=getchar();
	while(!isdigit(got)){
		got=getchar();
		if(got=='-'){
			minus=-1;
		};
	};
	while(isdigit(got)){
		result=result*10+got-'0';
		got=getchar();
	};
	return result*minus;
};
inline void print(int printion){
	if(printion<0){
		putchar('-');
		printion=-printion;
	};
	if(printion/10){
		print(printion/10);
	};
	putchar(printion%10+'0');
};
int maxn,maxm,answer;
int map[505][505],father[505*505];
int nxtrow[5]={0,1,-1,0,0};
int nxtcol[5]={0,0,0,1,-1};
inline int find(int findtion){
	if(findtion!=father[findtion]){
		father[findtion]=find(father[findtion]);
	};
	return father[findtion];
};
int main(int argc,char **argv){
	maxn=scan();
	maxm=scan();
	for(register int iter=1;iter<=maxn*maxm;++iter){
		father[iter]=iter;
	};
	for(register int iter=1;iter<=maxm;++iter){
		int color=scan()+1,row=scan(),col=scan();
		map[row][col]=color;
		++answer;
		for(register int next=1;next<=4;++next){
			int nextrow=row+nxtrow[next];
			int nextcol=col+nxtcol[next];
			if(map[nextrow][nextcol]!=color){
				continue;
			};
			int nxt=find((nextrow-1)*maxn+nextcol);
			int now=find((row-1)*maxn+col);
			if(nxt!=now){
				father[nxt]=now;
				--answer;
			};
		};
		print(answer);
		putchar('\n');
	};
	return 0;
}; 

测试点一二三四六过了,其他全部RE,师叔祖开的不够大吗?求助!

2023/12/21 21:41
加载中...