#include<bits/stdc++.h> using namespace std; struct node { int x,y; }f[500][500]; int n,m; node findth(node k) { if((f[k.x][k.y].x==k.x)&&(f[k.x][k.y].y==k.y)) return k; return f[k.x][k.y]=findth(f[k.x][k.y]); } int main() { scanf("%d %d",&n,&m); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ f[i][j].x=i; f[i][j].y=j; } } node k1,k2; for(int i=1;i<=m;i++){ int a,b; char c; scanf("%d %d %c",&a,&b,&c); if(c==‘D‘){ k1=findth(f[a][b]); k2=findth(f[a+1][b]); } if(c==‘R‘){ k1=findth(f[a][b]); k2=findth(f[a][b+1]); } if((k1.x==k2.x)&&(k1.y==k2.y)){ printf("%d\n",i); return 0; } else f[k2.x][k2.y]=k1; } printf("draw\n"); return 0; }
原文:https://www.cnblogs.com/qq1415584788/p/14732597.html