Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
各位老兄,我WA的不行了。自己从ACM SITE上下载的数据都是对的。为什么一直是WA,到底哪里错了呢?谢谢#include<stdio.h> #include<string.h> #define f(c) c-'A'+1 char s[5]; char rns[30]; int map[30][30]; int hash[30],front[30]; int list[1000][2]; int solve(int n) { int tmp[30]; memset(rns,0,sizeof(rns)); int r=-1,i,j,c=0,t=0; for(i=1;i<=26;i++){if(hash[i])t++;tmp[i]=hash[i];} for(i=1;i<=26;i++) { if(front[i] && tmp[i]==0) { tmp[i]=r; r=i; } } if(r==-1)return -1; for(i=1;i<=26;i++){for(j=1;j<=26;j++)if(map[i][j]==map[j][i] && map[i][j])break;if(j<=26)return -1;} while(r!=-1) { rns[c++]=(char)(r+'A'-1); i=r; r=tmp[r]; for(j=1;j<=26;j++) { if(map[i][j]) { tmp[j]--; if(tmp[j]==0){ tmp[j]=r; r=j; } } } } //printf("%d,%d,%s\n",c,t,rns); for(i=0;i<c-1;i++) { if(map[f(rns[i])][f(rns[i+1])]==0)break; } if(i==c-1 && c==n && rns[i]<=(n+'A'-1))return 1; else if(c<t)return -1; } int main() { int n,m,i,j; while(scanf("%d%d",&n,&m),m) { getchar(); memset(map,0,sizeof(map)); memset(hash,0,sizeof(hash)); memset(front,0,sizeof(front)); for(i=0;i<m;i++) { scanf("%s",s); list[i][0]=f(s[0]);list[i][1]=f(s[2]); } int ok=0; for(i=0;i<m;i++) { front[list[i][0]]++;hash[list[i][1]]++; map[list[i][0]][list[i][1]]=1; int k=solve(n); if(k==1){ printf("Sorted sequence determined after %d relations: %s.\n",i+1,rns); ok=1; break; } else if(k==-1){ printf("Inconsistency found after %d relations.\n",i+1); ok=1; break; } } if(ok==0)printf("Sorted sequence cannot be determined.\n"); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator