做法:图中的线很多,所以可以暴力,这么做简直是玷污了"竞赛图"啊....
#include<cstdio> #include<cstring> const int LMT=102; int ans[LMT],cnt; bool gra[LMT][LMT],vis[LMT]; //不构成回路的情况很少很少啊。。。 int n; void init(void) { memset(gra,0,sizeof(gra)); memset(vis,0,sizeof(vis)); cnt=0; } bool dfs(int u) { if(cnt>=n)return 1; int i=0; for(;i<n;i++) if(0==vis[i]&&gra[u][i]) { vis[i]=1; ans[cnt++]=i; if(dfs(i))return 1; vis[i]=0; cnt--; } return 0; } int main(void) { int i,T,u,v; scanf("%d",&T); while(T--) { init(); scanf("%d",&n); for(i=0;i<n*(n-1)/2;i++) { scanf("%d%d",&u,&v); u--;v--; gra[u][v]=1; } for(i=0;i<n;i++) { vis[i]=1; ans[0]=i; cnt=1; if(dfs(i))break; vis[i]=0; } if(i<n) { for(i=0;i<n-1;i++)printf("%d ",ans[i]+1); printf("%d\n",ans[i]+1); } else puts("Impossible"); } return 0; }