Pagini recente » Cod sursa (job #322682) | Cod sursa (job #2463404) | Cod sursa (job #1269599) | Cod sursa (job #2835273) | Cod sursa (job #2302395)
#include <iostream>
#include <vector>
#include <fstream>
#include <stdlib.h>
using namespace std;
ifstream in("dusman.in");
ofstream out("dusman.out");
int enemies[1000][1000];
void permutations(int poz, int n, vector <int>& arr, int* used, int k, int currCnt){
if(poz == n+1){
currCnt++;
if(currCnt == k){
for(int i = 0; i < arr.size(); i++){
cout << arr[i] << ' ';
}
cout << '\n';
exit(0);
}
return;
}
for(int i = 1; i <= n; i++){
if(!used[i]){
if(arr.size() == 0){
arr.push_back(i);
used[i] = 1;
permutations(poz+1, n, arr, used, k, currCnt);
arr.pop_back();
used[i] = 0;
}else{
if(!enemies[arr.back()][i]){
arr.push_back(i);
used[i] = 1;
permutations(poz+1, n, arr, used, k, currCnt);
arr.pop_back();
used[i] = 0;
}
}
}
}
}
int main()
{
vector <int> arr;
int n, m, k, *used;
used = new int[n+1];
in >> n >> k >> m;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
enemies[i][j] = 0;
}
}
int x, y;
for(int i = 1; i <= m; i++){
in >> x >> y;
enemies[x][y] = enemies[y][x] = 1;
}
for(int i = 1; i <= n; i++){
used[i] = 0;
}
//recursiveFunction(1, n, arr); // subset
//arr.clear();
permutations(1, n, arr, used, k, 0);
return 0;
}