3421. 수제 버거 장인
처음에 시간초과가 발생할 것 같아서 어떤 방식으로 풀지 굉장히 고민했다.
if(burger[state])==1)
{
return ;
}
이 부분만으로 통과가 될 수 있을까 했는데 다행히 시간초과에서 벗어났다.
비트마스크를 다시 한번 사용해볼 수 있었던 문제.
<정답 코드>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #include<iostream> #include<string.h> using namespace std; int N, M; int burger[(1 << 20)] = { 0, }; bool chk[21]; void dfs(int state, int n) { if (burger[state] == 1) { return; } if (n == N) { burger[state] = 1; return; } if ((state & (1 << n)) == 0) { dfs(state | 1 << n, n + 1); } dfs(state, n + 1); } int main() { //freopen("input.txt", "r", stdin); ios::sync_with_stdio(false); cin.tie(NULL); int tc; cin >> tc; for (int t = 1; t <= tc; t++) { memset(burger, 0, sizeof(burger)); memset(chk, false, sizeof(chk)); cin >> N >> M; int R = 0; for (int i = 0; i < M; i++) { int a, b, k; cin >> a >> b; k = (1 << (a - 1)) | (1 << (b - 1)); dfs(k, 0); } int ans = 0; for (int i = 0; i < (1<<N); i++) { if (burger[i]==0) { ans++; } } cout << "#" << t << " " << ans << "\n"; } return 0; } | cs |
반응형
'알고리즘 > SW EXPERT' 카테고리의 다른 글
4615. 재미있는 오셀로 게임 (0) | 2018.07.19 |
---|---|
4751. 다솔이의 다이아몬드 장식 (0) | 2018.07.17 |
4206. 연구소 탈출 (0) | 2018.04.09 |
4193. 수영대회 결승전 (0) | 2018.04.09 |
3977. 페르마의 크리스마스 정리 (0) | 2018.04.06 |