平面图转对偶图之后变成并查集
#include<cstdio>
int id[1500][1500];
int fa[2250002];
char c;
inline void read(int &a)
{a=0;do c=getchar();while(c<'0'||c>'9');while(c<='9'&&c>='0')a=(a<<3)+(a<<1)+c-'0',c=getchar();}
inline char get()
{
do c=getchar();while(c!='N'&&c!='E');
return c;
}
int find(int x){return fa[x]=(fa[x]==x?x:find(fa[x]));}
int main()
{
int x,y,i,j,n,k,cnt=1,ans=1;
char c[2],d[2];read(n),read(k);
for(i=1;i<n;++i)
for(j=1;j<n;++j)
fa[cnt]=id[i][j]=cnt,++cnt;
while(k--){
if(ans)
{
read(x),read(y);
c[0]=get();
read(i),read(j);d[0]=get();
}
else
{
read(i),read(j),d[0]=get();
read(x),read(y),c[0]=get();
}
i=find(id[x][y]);
j=find(c[0]=='N'?id[x-1][y]:id[x][y-1]);
if(ans=(i!=j))fa[i]=j;
puts(ans?"TAK":"NIE");
}
return 0;
}