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 |
贴一下代码:暴力判断更新每两个数之间的大小关系,二进制存储每个数的出度判断序列是否成型In Reply To:WA之后发现自己复制sample output把每次成功都写成了4次判断之后,,醉了醉了 Posted by:446101 at 2014-11-07 09:57:52 > 》》 #include <cstdio> #define maxn 26 using namespace std; int f[maxn][maxn]; int i,j; int c_son[maxn]; int k,l,m,n,achieve,done; int ans[maxn]; int pop,son; int main() { while(1) { scanf("%d%d\n",&n,&m); if(!(n||m))break; //initialization done=0; achieve=n+1; for(i=0; i<n; i++)for(j=0; j<n; j++)f[i][j]=0; for(i=0; i<n; i++)f[i][i]=1; for(i=0; i<n; i++)c_son[i]=0; for(i=1; i<=m; i++) { son=getchar()-'A'; getchar(); pop=getchar()-'A'; getchar(); if(f[son][pop]) { done=-1; printf("Inconsistency found after %d relations.\n",i); for(; i<m; i++) { getchar(); getchar(); getchar(); getchar(); } break; } else { for(j=0; j<n; j++)for(k=0; k<n; k++) if((!f[j][k]) & f[j][pop] & f[son][k]) { f[j][k]=1; achieve+=(1<<c_son[j]); c_son[j]++; } if(achieve==(1<<n)) { done=i; for(; i<m; i++) { getchar(); getchar(); getchar(); getchar(); } break; } } } if(done==-1)continue; if(!done)printf("Sorted sequence cannot be determined.\n"); else { for(i=0;i<n;i++)ans[c_son[i]]=i; printf("Sorted sequence determined after %d relations: ",done); for(i=0;i<n;i++)printf("%c",(char)'A'+ans[i]); printf(".\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