1 条题解

  • 0
    @ 2025-11-30 16:28:07

    C :

    #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;
    }
    

    C++ :

    #include<iostream>
    #include<cstdio>
    using namespace std;
    struct node
    {
    	int x,y;
    }f[301][301],k1,k2;
    int i,j,m,n,x,y;
    char c;
    node root(node k)
    {
    	if((f[k.x][k.y].x==k.x)&&(f[k.x][k.y].y==k.y))return k;
    	f[k.x][k.y]=root(f[k.x][k.y]);
    	return f[k.x][k.y];
    }
    int main()
    {
    	cin>>n>>m;
    	for(i=1;i<=n;i++)
    	{
    		for(j=1;j<=n;j++)
    		{
    			f[i][j].x=i;
    			f[i][j].y=j;
    		}
    	}
    	for(i=1;i<=m;i++)
    	{
    		cin>>x>>y>>c;
    		if(c=='D')
    		{
    			k1=root(f[x][y]);
    			k2=root(f[x+1][y]);
    		}
    		if(c=='R')
    		{
    			k1=root(f[x][y]);
    			k2=root(f[x][y+1]);
    		}
    		if((k1.x==k2.x)&&(k1.y==k2.y))
    		{
    			cout<<i<<endl;
    			return 0;
    		}
    		else f[k1.x][k1.y]=k2;
    	}
    	cout<<"draw"<<endl;
    	return 0;
    }
    
    • 1

    信息

    ID
    1451
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者