#include <stdio.h> #include <stdlib.h> int f[40005]; int getindex(int x, int y, int n){ return (x-1) * n + y; } int find(int v){ if(f[v] == v)return v; int F = find(f[v]); f[v] = F; return F; } int main() { int n, m; while(scanf("%d%d",&n,&m) != EOF){ for(int i = 1;i <= n * n; i++)f[i] = i; int flag = 1; for(int j = 1;j <= m; j++){ int x, y; char op; scanf("%d %d %c",&x,&y,&op); getchar(); int index1 = getindex(x, y, n); int index2 = op=='D'?getindex(x+1,y, n):getindex(x,y+1, n); int f1 = find(index1); int f2 = find(index2); if(f1 != f2)f[f1] = f2; else{ if(flag){ printf("%d\n",j); flag = 0; return 0; } } } if(flag)printf("draw\n"); } return 0; } /************************************************************** Problem: 2241 User: admin Language: C Result: Accepted Time:48 ms Memory:1300 kb ****************************************************************/