hdu-2181
#include <cstdio> #include <cstring> #include <algorithm> #define RE register #define FOR(i,a,b) for(RE int i=a;i<=b;++i) #define sc(n) scanf("%d",&n) using namespace std; int m,mp[21][3],cnt,vis[21],ans[21]; void dfs(int d,int k) { if(k==21) { if(mp[d][0]!=m&&mp[d][1]!=m&&mp[d][2]!=m)return; printf("%d: %d ",++cnt,m); FOR(i,2,20)printf("%d ",ans[i]); printf("%d\n",m);return; } FOR(i,0,2) if(!vis[mp[d][i]]) { ans[k]=vis[mp[d][i]]=mp[d][i]; dfs(ans[k],k+1); vis[mp[d][i]]=0; } } int main() { FOR(i,1,20)sc(mp[i][0]),sc(mp[i][1]),sc(mp[i][2]),sort(mp[i],mp[i]+3); while(sc(m),m)memset(vis,0,sizeof vis),cnt=0,vis[m]=1,dfs(m,2); return 0; }