1 条题解

  • 0
    @ 2023-3-30 22:27:23

    C++ :

    #include<stdio.h>
    #include<string.h>
    
    int g[26][26],flag[26][26];
    
    void floyd()
    {
    	int i,j,k;
    	for(k=0;k<26;k++)
    		for(i=0;i<26;i++)
    			for(j=0;j<26;j++)
    				if(flag[i][k]&&flag[k][j])
    					flag[i][j]=1;
    }
    
    int main()
    {
    	int n,m,i,j,x,y,c=0,bj;
    	char s[4];
    	scanf("%d",&n);
    	while(n--)
    	{
    		memset(g,0,sizeof(g));
    		memset(flag,0,sizeof(flag));
    		scanf("%d",&m);
    		while(m--)
    		{
    			scanf("%s",s);
    			x=s[0]-'A';
    			y=s[2]-'A';
    			if(s[1]=='<')
    			{
    				g[x][y]=1;
    				flag[x][y]=1;
    			}
    			else
    			{
    				g[y][x]=1;
    				flag[y][x]=1;
    			}
    		}
    		floyd();
    		printf("Case %d:\n",++c);
    		for(bj=i=0;i<26;i++)
    			for(j=0;j<26;j++)
    				if(!g[i][j]&&flag[i][j])
    				{
    					bj=1;
    					printf("%c<%c\n",i+'A',j+'A');
    				}
    		if(!bj)
    			printf("NONE\n");
    	}
    	return 0;
    }
    
    • 1

    信息

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