거리 계산만 잘해주면 큰 문제는 없을 것 같다.
<코드>
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 | #include <stdio.h> #include <algorithm> using namespace std; int tc, n, v[20001], d[20001], t1, t2, mod = 1000; char temp; int f(int x) { if (x == v[x]) return d[x]; d[x] += f(v[x]); v[x] = v[v[x]]; return d[x]; } void u(int x, int y) { d[x] = abs(y - x) % mod; v[x] = y; } int main() { scanf("%d", &tc); while (tc--) { scanf("%d", &n); for (int i = 0; i <= n; i++) v[i] = i, d[i] = 0; while (1) { scanf(" %c", &temp); if (temp == 'O') break; else if (temp == 'E') { scanf("%d", &t1); printf("%d\n", f(t1)); } else if (temp == 'I') { scanf("%d%d", &t1, &t2); u(t1, t2); } } } return 0; } | cs |
'BOJ' 카테고리의 다른 글
5588 별자리 찾기 (0) | 2017.09.06 |
---|---|
3621 족보 (0) | 2017.09.06 |
9938 방 청소 (0) | 2017.09.06 |
10775 공항 (0) | 2017.09.06 |
1976 여행 가자 (0) | 2017.09.06 |