이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "Joi.h"
#include<bits/stdc++.h>
#define rep(i,l,r) for(int i=l;i<r;i++)
#define pb push_back
#define bit(x,i) ((x>>i)&1ll)
using namespace std;
typedef long long num;
typedef pair<int,int> point;
const int maxn=1e4+10,lg=60;
vector<int> G[maxn];
int te=0;
num x;
bool mark[maxn];
void dfs(int a){
mark[a]=1;
MessageBoard(a,bit(x,te));
te=(te+1)%lg;
for(int b:G[a]){
if(!mark[b]){
dfs(b);
}
}
}
void Joi(int N, int M, int A[], int B[], num X, int T) {
x=X;
for(int i = 0; i < M; i++){
G[A[i]].pb(B[i]);
G[B[i]].pb(A[i]);
}
dfs(55);
}
#include "Ioi.h"
#include<bits/stdc++.h>
#define rep(i,l,r) for(int i=l;i<r;i++)
#define pb push_back
#define bit(x,i) ((x>>i)&1ll)
using namespace std;
typedef long long num;
typedef pair<int,int> point;
const int maxn=1e4+10,lg=60;
vector<int> G0[maxn];
int te0=0;
num x0;
bool mark0[maxn];
int v,t[maxn],size0[maxn],par[maxn];
int root;
void dfs0(int a){
mark0[a]=1;
t[a]=te0;
te0=(te0+1)%lg;
size0[a]=1;
for(int b:G0[a]){
if(!mark0[b]){
par[b]=a;
dfs0(b);
size0[a]+=size0[b];
}
}
}
int ss=0;
void dfs1(int a){
if(ss==lg) return;
mark0[a]=1;
if(v){
x0|=1ll<<t[a];
}
ss++;
for(int b:G0[a]){
if(!mark0[b] && par[a]!=b){
v=Move(b);
dfs1(b);
if(ss==lg) return;
v=Move(a);
}
}
}
long long Ioi(int N, int M, int A[], int B[], int P, int V, int T) {
v=V;
for(int i = 0; i < M; i++){
G0[A[i]].pb(B[i]);
G0[B[i]].pb(A[i]);
}
dfs0(55);
fill(mark0,mark0+N,0);
root=P;
while(size0[root]<lg){
root=par[root];
v=Move(root);
}
dfs1(root);
return x0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |