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
",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;
}

  

原文地址:https://www.cnblogs.com/2aptx4869/p/12216651.html