Cod sursa(job #122360)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 11 ianuarie 2008 21:42:26
Problema Dusman Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <stdio.h>
#include <cassert>
#include <algorithm>
#include <vector>
using namespace std;

long n,k,m,i,j,c,a,b,d[1002][4];
bool ok;

int main(){
    freopen("dusman.in","r",stdin);
    freopen("dusman.out","w",stdout);
    
    vector<int>perm;
    
    scanf("%ld %ld %ld",&n,&k,&m);
    for (i=1;i<=m;i++){
        scanf("%ld %ld",&a,&b);
        d[a][0]++;
        d[a][d[a][0]]=b;
        d[b][0]++;
        d[b][d[b][0]]=a;
    }
    for (i=1;i<=n;i++)perm.push_back(i);
    c=0;
    while (c<k){
          ok=1;
          for (i=0;i<n-1;i++){
              for (j=1;j<=d[perm[i]][0];j++)
                  if (perm[i+1]==d[perm[i]][j]){ok=0;break;}
              if (!ok)break;
          }
          c+=ok;
          if(c==k){for (i=1;i<=n;i++)printf("%ld ",perm[i-1]);printf("\n");}
          next_permutation(perm.begin(),perm.end());
    }
    //for (i=1;i<=n;i++)printf("%ld ",perm[i-1]);
    //printf("\n");
    
    return 0;
}