티스토리 뷰
#define fore(i, l, r) for(int i = int(l); i < int(r); i++)
fore (i, 0, q) {
char c;
cin >> id[i] >> c;
id[i]--;
ch[i] = c == '+' ? 1 : -1;
}
0부터 q미만까지 입력받기
fore (mask, 1, 1 << n) fore (lst, 0, n) {
if (d[mask][lst] == INF)
continue;
fore (nxt, 0, n) {
if ((mask >> nxt) & 1) // 비트마스킹 할 때 1인지 확인하는 방법 기억해두기
continue;
int nmask = mask | (1 << nxt);
d[nmask][nxt] = min(d[nmask][nxt], d[mask][lst] + minDist[lst][nxt]);
}
}
비트마스킹 dp 순환
const int INF = int(1e9);
INF 전처리
위 내용보다는 문제를 해결하기 위한 풀이를 세우는 것이 중요하다.