请管理员检查答案文件个格式。如果只有 IMPOSSIBLE 和 POSSIBLE ,请把两个注释中间的代码去掉。
#include "testlib.h"
using namespace std;
int T,N,M;
char str[55][55];
char aft[55][55];
bool lig[55][55];
char getSingleChar(InStream& x){
char ret=x.readChar();
while(isspace(ret)) ret=x.readChar();
return ret;
}
void GoLight(int x,int y,int dx,int dy){
if(x<=0 || x>N || y<=0 || y>M) return;
if(aft[x][y]=='-' || aft[x][y]=='|')
quitf(_wa, "Wrong Answer: Cannon Damaged!");
lig[x][y]=true;
if(aft[x][y]=='\\') swap(dx,dy);
if(aft[x][y]=='/') swap(dx,dy),dx*=-1,dy*=-1;
GoLight(x+dx,y+dy,dx,dy);
}
int main(int argc,char ** argv){
registerTestlibCmd(argc,argv);
T=inf.readInt();
while(T--){
N=inf.readInt();M=inf.readInt();
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)
str[i][j]=getSingleChar(inf);
string qans = ouf.readWord();
string rans = ans.readWord();
if(qans!=rans)
quitf(_wa, "Wrong Answer: Judge Error!");
if(rans=="POSSIBLE"){
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)
aft[i][j]=getSingleChar(ouf);
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++){
if((str[i][j]=='|' || str[i][j]=='-') ^ (aft[i][j]=='|' || aft[i][j]=='-'))
quitf(_wa, "Wrong Answer: Invalid Changes!");
if(str[i][j]!='|' && str[i][j]!='-' && str[i][j]!=aft[i][j])
quitf(_wa, "Wrong Answer: Invalid Changes!");
}
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)
lig[i][j]=false;
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++){
if(aft[i][j]=='|')
GoLight(i-1,j,-1,0),GoLight(i+1,j,1,0);
if(aft[i][j]=='-')
GoLight(i,j-1,0,-1),GoLight(i,j+1,0,1);
}
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)
if(aft[i][j]=='.' && !lig[i][j])
quitf(_wa, "Wrond Answer: Dark Remain!");
//
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)
getSingleChar(ans);
//
}
}
quitf(_ok, "Answer Correct!");
return 0;
}