티스토리 뷰

Algorithm/ALGOSPOT

PICNIC

henry1214 2021. 6. 7. 10:52

https://algospot.com/judge/problem/read/PICNIC#

 

오름차순으로 조합하게끔 강제하여 중복으로 경우의 수를 세는 일이 없도록 한다.

 

#include <cstdio>
#include <cstring>

int t,n,m,a,b;
bool friends[10][10],check[10];

int count()
{
    int first=-1;
    for(int i=0;i<n;i++)
    {
        if(!check[i])
        {
            first=i;
            break;
        }
    }
    if(first==-1) return 1;
    int ret=0;
    for(int second=first+1;second<n;second++)
    {
        if(!check[second] && friends[first][second])
        {
            check[first]=check[second]=true;
            ret+=count();
            check[first]=check[second]=false;
        }
    }
    return ret;
}

int main()
{
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d %d",&n,&m);
        while(m--)
        {
            scanf("%d %d",&a,&b);
            friends[a][b]=friends[b][a]=true;
        }
        printf("%d\n",count());
        memset(friends,0,sizeof(friends));
        memset(check,0,sizeof(check));
    }
    return 0;
}

'Algorithm > ALGOSPOT' 카테고리의 다른 글

QUADTREE  (0) 2021.06.07
CLOCKSYNC  (0) 2021.06.07
BOARDCOVER  (0) 2021.06.07
BOGGLE  (0) 2021.06.07
FESTIVAL  (0) 2018.06.15
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday