알고리즘/JM북

156p 소풍

quantdave 2017. 2. 5. 20:51

#include <iostream>

#include <vector>

#include <memory.h>

using namespace std;


int n,m;

int C;

bool areFriends[10][10],taken[10];


int countPairings(bool taken[10])

{

int firstFree = -1;


for(int i=0; i<n; i++)

{

if(!taken[i])

{

firstFree = i;

break;

}

}

if(firstFree == -1) return 1;


int ret = 0;


for(int pairWith = firstFree + 1; pairWith < n; pairWith++)

{

if(!taken[pairWith] && areFriends[firstFree][pairWith])

{

taken[firstFree] = taken[pairWith] = true;

ret += countPairings(taken);

taken[firstFree] = taken[pairWith] = false;

}

}

return ret;

}


int main()

{

cin>>C;

while(C--)

{

memset(areFriends, false, sizeof(areFriends));

cin>>n>>m;

int f1,f2;

for(int i=0; i<m; i++)

{

cin>>f1>>f2;

areFriends[f1][f2] = true;

areFriends[f2][f1] = true;

}

cout<<countPairings(taken);

}


}

'알고리즘 > JM북' 카테고리의 다른 글

p312 드래곤 커브  (0) 2017.02.13
p270 두니발 박사의 탈옥  (0) 2017.02.13
264p 폴리노미오  (0) 2017.02.13
149p 조합 찾기  (0) 2017.02.05
2장 p30 사탕 나눠주기  (0) 2017.01.30