# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
103940 | Bodo171 | Amusement Park (JOI17_amusement_park) | C++14 | 38 ms | 5132 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "Joi.h"
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
static const int nmax=20005;
static vector<int> v[nmax];
static int viz[nmax],w[nmax],tt[nmax];
static long long et[nmax];
static int i,j,nr;
static void dfs(int x)
{
viz[x]=1;et[x]=++nr;et[x]%=60;
w[x]=1;
for(int i=0;i<v[x].size();i++)
if(!viz[v[x][i]])
{
tt[v[x][i]]=x;
dfs(v[x][i]);
w[x]+=w[v[x][i]];
}
}
void Joi(int N, int M, int A[], int B[], long long X, int T) {
for(i=0;i<M;i++)
{
v[A[i]].push_back(B[i]);
v[B[i]].push_back(A[i]);
}
for(i=0;i<N;i++)
sort(v[i].begin(),v[i].end());
dfs(0);
for(int i = 0; i < N; i++){
MessageBoard(i, (((1LL<<et[i])&X)!=0));
}
}
#include "Ioi.h"
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
static const int nmax=20005;
static vector<int> v[nmax];
static int viz[nmax],w[nmax],tt[nmax],l[nmax],r[nmax];
static long long et[nmax];
static int act[100],vs[100];
static int i,j,nr;
static int visited;
static void dfs(int x)
{
viz[x]=1;et[x]=++nr;et[x]%=60;
w[x]=1;
for(int i=0;i<v[x].size();i++)
if(!viz[v[x][i]])
{
tt[v[x][i]]=x;
dfs(v[x][i]);
w[x]+=w[v[x][i]];
}
}
static int start=0;
static void dfs2(int x)
{
visited++;vs[et[x]]=1;
for(int i=0;i<v[x].size()&&visited<60;i++)
if(w[v[x][i]]<w[x]&&(!vs[et[v[x][i]]]))
{
act[et[v[x][i]]]=Move(v[x][i]);
dfs2(v[x][i]);
}
if(visited<60)
{
int bla=Move(tt[x]);
act[et[tt[x]]]=bla;
if(!vs[et[tt[x]]])
dfs2(tt[x]);
}
}
long long Ioi(int N, int M, int A[], int B[], int P, int V, int T) {
for(i=0;i<M;i++)
{
v[A[i]].push_back(B[i]);
v[B[i]].push_back(A[i]);
}
for(i=0;i<N;i++)
sort(v[i].begin(),v[i].end());
dfs(0);
int rt=P;
int xx=V;
start=P;
act[et[P]]=xx;
/*while(w[rt]<60)
{
xx=Move(tt[rt]);
rt=tt[rt];
}*/
//act[et[rt]]=xx;
dfs2(P);
long long ans=0;
for(i=0;i<60;i++)
if(act[i])
{
ans+=(1LL<<i);
}
return ans;
}
Compilation message (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... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |