| ||||||||||
| 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 | |||||||||
代码写得又屎又长 ,求大牛给简短代码以供膜拜= =我太挫了
#include<cstdio>
#include<cstdlib>
#include<cstring>
int p[30],tp[30],g[30][30],n,m,i,j,sol,mt,saya;
char s[30];
int ts()
{
int f[30]={0},fir=1,nd=n,findi=0,nfind=0;
char ss[30];
memset(ss,0,sizeof(ss));
while (1)
{
fir=1;findi=0;
for (i=1;i<=n;i++)
{
if (tp[i]==0&&!f[i])
if (fir)
{
f[i]=1;
fir=0;
findi=i;
ss[strlen(ss)]='A'+i-1;
nd--;
}
else {nfind=1;break;}
}
if (!nd)
{
if (nfind) return 0;
printf("Sorted sequence determined after %d relations: %s.",mt,ss);
memset(ss,0,sizeof(ss));
return 1;
}
if (findi) for(i=1;i<=n;i++) if (g[findi][i]) tp[i]-=g[findi][i];
if (!findi) return -1;
}
}
int main()
{
while (scanf("%d%d",&n,&m),n&&m)
{
sol=0;mt=1;memset(g,0,sizeof(g));memset(p,0,sizeof(p));
while (mt<=m)
{
memset(s,0,sizeof(s));
scanf("%s",s);getchar();
if (!sol)
{
p[s[2]-'A'+1]++;
g[s[0]-'A'+1][s[2]-'A'+1]++;
memcpy(tp,p,sizeof(p));
saya=ts();
if (saya==1) {sol=1;printf("\n");}
if (saya==-1) {sol=1;printf("Inconsistency found after %d relations.\n",mt);}
if (saya==0&&mt==m) {sol=1;printf("Sorted sequence cannot be determined.\n");}
}
mt++;
}
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator