#include "stdio.h" main() { FILE *fp1,*fp2; int ant_inst; int ant_lag,ant_kamp; int l,k,i,j; char lag1,lag2; int taperfor[28][28]; int vinner,taper; int best; int plass[29]; int nocycle; fp1 = fopen("rank.in","r"); fp2 = fopen("rank.out","w"); fscanf(fp1,"%d",&ant_inst); for(i=1;i<=ant_inst;i++) { fscanf(fp1,"%d %d \n",&ant_lag,&ant_kamp); for(j=1;j<=ant_lag;j++) for(k=1;k<=ant_lag;k++) taperfor[j][k] = 0; for(j=1;j<=ant_kamp;j++) { fscanf(fp1,"%c %c \n ",&lag1,&lag2); vinner = (int) (lag1 - 'A' + 1); taper = (int) (lag2 - 'A' + 1); taperfor[taper][vinner] = 1; } nocycle = 1; for(j=1;j<=ant_lag;j++) { best = 0; k=1; while ((k<= ant_lag) && (best==0)) { best = k; for(l=1;l<=ant_lag;l++) if (taperfor[k][l] == 1) best = 0; k++; } if (best != 0) { plass[j] = best; for(l=1;l<=ant_lag;l++) taperfor[l][best] = 0; taperfor[best][best] = 1; } if (best == 0) { nocycle = 0; } } if (nocycle) { for(l=1;l<=ant_lag;l++) if (l==ant_lag) fprintf(fp2,"%c",plass[l] +'A' - 1); else fprintf(fp2,"%c ",plass[l] +'A' - 1); fprintf(fp2,"\n"); } else fprintf(fp2,"No legal ranking possible\n"); } fclose(fp2); }