• zoj1589Professor John


    #include<string>
    #include<set>
    #include<iostream>
    #include<cstring>
    using namespace std;
    /*题意:根据已有的变量关系能否推出别的变量关系(条件中已给出的滤去,若推不出别的关系输出NONE)传递闭包*/
    int small[30][30],vis[30][30],hash[30][30];//vis[][]标记关系在输入中已给出,hash[][]表示关系已在DFS中得到
     set <string> ans;
    		
    void DFS(int x,int cet)
    {
        for(int i=0;i<26;i++)
    	{
    		if(small[x][i]&&!hash[cet][i])
    		{
    			char a='A'+cet,c='A'+i;
    		    string ss;ss.clear();
    			ss+=a,ss+='<',ss+=c;
    			hash[cet][i]=1;
    			if(!vis[cet][i])ans.insert(ss);
    			DFS(i,cet);
    		}
    		
    	}
    	return ;
    }
    int main()
    {
    	int cas,n,k=0;
    	string s;
    	cin>>cas;
    	while(cas--)
    	{
             cin>>n;
    		 k++;
    		 memset(vis,0,sizeof(vis));
    		 memset(small,0,sizeof(small));
    		 memset(hash,0,sizeof(hash));
             for(int i=0;i<n;i++)
    		 {
    			 cin>>s;
    			 vis[s[0]-'A'][s[2]-'A']=1;
    			 vis[s[2]-'A'][s[0]-'A']=1;
    			 if(s[1]=='<')small[s[0]-'A'][s[2]-'A']=1;
    			 else small[s[2]-'A'][s[0]-'A']=1;
    
    		 }
    		
    		 ans.clear();
    	     for(int i=0;i<26;i++)
    			 DFS(i,i);
    				 cout<<"Case "<<k<<":"<<endl;
    				 if(ans.empty())cout<<"NONE"<<endl;
    				 else
    				 {
    					
    					 set <string > ::iterator it;
    					 for(it=ans.begin();it!=ans.end();it++)
    						 cout<<*it<<endl;
    				 }
    		
    		
    
    	}
    }
    
  • 相关阅读:
    消息队列介绍
    SpringBoot随笔-SpringBoot集成Druid
    Redis-Redis基本类型及使用Java操作
    信息安全
    计算机网络基础
    多媒体技术
    数据库基础
    程序设计基础
    计算机软件体系
    计算机硬件体系
  • 原文地址:https://www.cnblogs.com/sook/p/2020351.html
Copyright © 2020-2023  润新知