# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
347795 | juggernaut | 열대 식물원 (Tropical Garden) (IOI11_garden) | C++14 | 22 ms | 42604 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include"garden.h"
#include"gardenlib.h"
#include<bits/stdc++.h>
using namespace std;
#ifdef EVAL
#else
#include"grader.cpp"
#endif
#define pb push_back
int go[300005][30];
vector<int>g[300005];
void count_routes(int N,int M,int P,int R[][2],int Q,int G[]){
memset(go,-1,sizeof(go));
for(int i=0;i<M;i++){
int x=R[i][0],y=R[i][1];
if(g[x].size()<2)g[x].pb(y);
if(g[y].size()<2)g[y].pb(x);
}
for(int i=0;i<N;i++)
for(int j=0;j<g[i].size();j++){
int to=g[i][j];
if(g[to][0]==i&&g[to].size()>1)go[i+j*N][0]=to+N;
else go[i+j*N][0]=to;
}
for(int j=1;j<30;j++)
for(int i=0;i<(N<<1);i++)
if(go[i][j]!=-1)go[i][j]=go[go[i][j-1]][j-1];
int cnt=0;
for(int i=0;i<N;i++){
int k=G[0],node=i;
for(int j=29;j>=0;j--)if(k>=(1<<j))node=go[node][j],k-=(1<<j);
cnt+=(node==P||node==P+N);
}
answer(cnt);
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |