Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

WA,求BT测试数据?

Posted by gzw_02 at 2008-06-20 19:25:03 on Problem 1094 and last updated at 2008-06-20 22:35:55
#include <iostream>
using namespace std;

int n,slen;
bool adj[26][26],m[26][26]; 
bool cha[26],ha[26];
int r;
int seq[27];
int topo(){
   bool goon=true,unq=true;
   int i,j,k,d,a1;
   r=0;
   for(i=0;i<26;i++){
		   ha[i]=cha[i];
	   for(j=0;j<26;j++)
		   m[i][j] = adj[i][j];
   }
   while(goon){
	   a1=-1;
	   goon=false;
       for(i=0;i<26;i++){
	       d=0;
	       if(ha[i]){
           goon=true;     
		   for(j=0;j<26;j++) {
			   if(!ha[j]||i==j) continue; 
			   if(m[j][i]) d++; 
		   }
		   if(d==0) {
			   if(a1<0) a1=i;
			   else  unq=false;
		   } 
		   }
	   }
	   if(a1<0&&goon)   return 2; //有环
       seq[r++]=a1+65;
	   ha[a1]=false;
	   if(a1>=0&&a1<=25)
	   for(k=0;k<26;k++)  m[a1][k]=false;	    
   }
   if(unq)  return 1; //唯一的排序
   else return 0; //不唯一的排序
}

int main(){
	int i,ch1,ch2,q,val;
	bool inc,fin;
	while(scanf("%d %d",&n,&slen),n){
		inc=true;
		fin=false;
		memset(cha,0,sizeof(cha));
		memset(adj,0,sizeof(adj));
	
		for(i=0;i<slen;i++){
			if(fin){
				getchar();getchar();getchar();getchar();
				continue;
			}
			getchar();
			ch1=getchar();
			getchar();
			ch2=getchar();
			if(ch1==ch2) {
            inc=false;
	        printf("Inconsistency found after %d relations.\n",i+1);
		    fin=true;
			continue;
			}
			adj[ch1-65][ch2-65]=true;
            cha[ch1-65]=true;
			cha[ch2-65]=true;
			val=topo();
			if(val==2){
            inc=false;
			printf("Inconsistency found after %d relations.\n",i+1);
			fin=true;
			continue;
            }else if(val==1&&r==n+1){ 
				printf("Sorted sequence determined after %d relations: ",i+1);
			    for(q=0;q<n;q++){
                printf("%c",seq[q]);  
				}
				printf(".\n");
				fin=true;
			    continue;
			}
		}
		      if(r<=n&&inc) printf("Sorted sequence cannot be determined.\n");
	}
	return 1;
}
 

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator