zoukankan      html  css  js  c++  java
  • 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;
    				 }
    		
    		
    
    	}
    }
    
  • 相关阅读:
    ubuntu16.04下笔记本自带摄像头编译运行PTAM
    ar的主流算法
    ubuntu下安装meshlab
    打开.py文件的方法
    Python_ip代理
    对书名的抓取
    JS动态增加删除UL节点LI及相关内容示例
    js遍历json
    js移除某一类的div
    工厂模式
  • 原文地址:https://www.cnblogs.com/sook/p/2020351.html
Copyright © 2011-2022 走看看