1 #include<cstdio> 2 #include<iostream> 3 using namespace std; 4 int n,m; 5 char c; 6 int a,b; 7 struct node 8 { 9 int x,y; 10 }far[500][500],k1,k2; 11 node find(node k) 12 { 13 if((far[k.x][k.y].x==k.x)&&(far[k.x][k.y].y==k.y))return k; 14 far[k.x][k.y]=find(far[k.x][k.y]); 15 return far[k.x][k.y]; 16 } 17 int main() 18 { 19 freopen("game.in","r",stdin); 20 freopen("game.out","w",stdout); 21 scanf("%d%d",&n,&m); 22 for(int i=1;i<=n;++i) 23 for(int j=1;j<=n;++j) 24 { 25 far[i][j].x=i;far[i][j].y=j; 26 } 27 for(int i=1;i<=m;++i) 28 { 29 cin>>a>>b>>c; 30 if(c==‘D‘) 31 { 32 k1=find(far[a][b]); 33 k2=find(far[a+1][b]); 34 } 35 if(c==‘R‘) 36 { 37 k1=find(far[a][b]); 38 k2=find(far[a][b+1]); 39 } 40 if(k1.x==k2.x&&k1.y==k2.y) 41 { 42 printf("%d\n",i);return 0; 43 } 44 else far[k1.x][k1.y]=k2; 45 } 46 printf("draw"); 47 return 0; 48 }
原文:http://www.cnblogs.com/mjtcn/p/6700487.html