이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
unordered_set<int> adj[(int)15e4+4];
int ps[(int)15e4+4][2];
int jp1[(int)15e4+4][31][2];
int jp2[(int)15e4+4][31][2];
int n;
void answer(int x);
void init(){
for (int t=1; t<31; t++){
for (int i=0; i<n; i++){
int a = jp1[i][t-1][0]; int b = jp1[i][t-1][1];
if (a==jp1[b][0][1]){
jp1[i][t][0] = jp2[b][t-1][0];
jp1[i][t][1] = jp2[b][t-1][1];
} else {
jp1[i][t][0] = jp1[b][t-1][0];
jp1[i][t][1] = jp1[b][t-1][1];
}
a = jp2[i][t-1][0]; b = jp2[i][t-1][1];
if (a==jp1[b][0][1]){
jp2[i][t][0] = jp2[b][t-1][0];
jp2[i][t][1] = jp2[b][t-1][1];
} else {
jp2[i][t][0] = jp1[b][t-1][0];
jp2[i][t][1] = jp1[b][t-1][1];
}
}
}
}
int jump(int p, int k){
int last = -1;
for (int i=30; i>=0; i--){
if (k & (1<<i) ){
if (last != jp1[p][0][1]){
last = jp1[p][i][0];
p = jp1[p][i][1];
} else {
last = jp2[p][i][0];
p = jp2[p][i][1];
}
}
}
}
void count_routes(int N, int M, int P, int R[][2], int Q, int G[]){
for (int i=0; i<M; i++){
adj[R[i][0]].insert(R[i][1]); adj[R[i][1]].insert(R[i][0]);
}
for (int i=0; i<N; i++) ps[i][0]=-1, ps[i][1]=-1;
for (int i=0; i<N; i++){
int a = R[i][0]; int b= R[i][1];
if (ps[a][0]==-1) ps[a][0] = b; else if (ps[a][1]==-1) ps[a][1] = b;
if (ps[b][0]==-1) ps[b][0] = a; else if (ps[b][1]==-1) ps[b][1] = a;
}
for (int i=0; i<N; i++) if (ps[i][1]==-1) ps[i][1] = ps[i][0];
for (int i=0; i<N; i++){
jp1[i][0][0] = i; jp1[i][0][1] = ps[i][0];
jp2[i][0][0] = i; jp2[i][0][1] = ps[i][1];
}
n = N;
init();
for (int i=0; i<Q; i++){
int ans = 0;
for (int t=0; t<N; t++){
if (jump(t, G[i]) == P) ans++;
}
answer(ans);
}
}
// int main(){
// int n = 6; int m = 6;
// int p=0;int q = 1; int g[] = {3};
// int r[][2]= {
// {1,2},
// {0,1},
// {0,3},
// {3,4},
// {4,5},
// {1,5}
// };
// count_routes(n,m,p,r,q,g);
// }
컴파일 시 표준 에러 (stderr) 메시지
garden.cpp: In function 'int jump(int, int)':
garden.cpp:49:1: warning: no return statement in function returning non-void [-Wreturn-type]
49 | }
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |