zoukankan      html  css  js  c++  java
  • poj 1094

    唉  这几天有点热 有点烦躁 以后能做成什么样。。。。 

    题意:给定n个字母《0+A,...n+A》 和m个关系 想x>y  问是否能唯一确定他们的大小关系

    1  在第几个关系能确定他们的排序 就输出这个位置和排序

    2 如果出现矛盾就输出矛盾的位置

    3 整个关系输入之后还不能确定则输出不能确定关系

    #include<iostream>
    #include<cstring>
    using namespace std;
    int map[55][55];
    int in[55];
    int jie[55];
    int n;
    int sort()//1  不能排序  ;  2 能排序
    {
    	int ji[55];
    	int f=2;
    //	memset(s,0,sizeof(s));
    	int i,j;
    	int x,sum;
    	for(i=1;i<=n;i++)
    		ji[i]=in[i];
    	for(i=1;i<=n;i++)
    	{
    		sum=0;
    		for(j=1;j<=n;j++)
    			if(ji[j]==0)
    			{
    				sum++;
    				x=j;
    			}
    		if(sum==0) return 1;   //是否有环
    		if(sum>1) f=0;
    		jie[i]=x;
    		ji[x]=-1;
    		for(j=1;j<=n;j++)
    			if(map[x][j])
    				ji[j]--;
    	}
    	return f;
    }
    int main()
    {
    	int yes,i;
    	char s[11];
    	int m;
    	while(cin>>n>>m)
    	{
    		yes=0;
    		if(n==0&&m==0)
    			break;
    		memset(in,0,sizeof(in));
    		memset(map,0,sizeof(map));
    		for(i=1;i<=m;i++)
    		{
    			cin>>s;
    			if(yes) continue;
    			int u=s[0]-'A'+1;
    			int v=s[2]-'A'+1;
    			if(s[1]=='<') 
    			{
    				if(map[v][u]) 
    				{
    					cout<<"Inconsistency found after "<<i<<" relations."<<endl;
    					yes=1;
    					continue;
    				}
    				map[u][v]=1;
    				in[v]++;
    			}
    			else 
    			{
    				if(map[u][v]) 
    				{
    					cout<<"Inconsistency found after "<<i<<" relations."<<endl;
    					yes=1;
    					continue;
    				}
    				map[v][u]=1;
    				in[u]++;
    			}
    			int x=sort();
    			if(x==1)
    			{	cout<<"Inconsistency found after "<<i<<" relations."<<endl;
    					yes=1;
    					continue;
    			}
    		    if(x==2)
    			{
    				cout<<"Sorted sequence determined after "<<i<<" relations: ";
    				for(int j=1;j<=n;j++)
    					cout<<(char)(jie[j]-1+'A');
    				cout<<'.'<<endl;
    				yes=1;
    			}
    		}
    	
    		if(!yes)
    			cout<<"Sorted sequence cannot be determined."<<endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    java中Executor、ExecutorService、ThreadPoolExecutor介绍
    JAVA多线程实现的四种方式
    JVM内存结构
    Synchronized修饰静态变量和普通变量的区别
    tcpkill工作原理分析
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
  • 原文地址:https://www.cnblogs.com/zhangdashuai/p/3778274.html
Copyright © 2011-2022 走看看