#include "Joi.h"
#include <bits/stdc++.h>
typedef long long ll;
const int Nmax = 30005;
using namespace std;
static bool used[Nmax];
static vector<int> v[Nmax];
static int bit, root, w[Nmax], t[Nmax];
static ll TO;
static void dfs_sel_edges(int node)
{
used[node] = 1;
w[node] = 1;
for(auto it : v[node])
if(!used[it])
{
t[it] = node;
dfs_sel_edges(it);
w[node] += w[it];
}
}
static void dfs(int node)
{
MessageBoard(node, (TO >> bit) & 1);
for(auto it : v[node])
{
bit = (bit+1) % 60;
dfs(it);
}
}
static bool cmp(int a, int b)
{
return w[a] < w[b];
}
void Joi(int N, int M, int A[], int B[], ll X, int _T)
{
mt19937 mt(58);
root = uniform_int_distribution<int>(0, N-1)(mt);
vector<int> permut(M);
for(int i = 0; i < M; ++i)
permut[i] = i;
shuffle(begin(permut), end(permut), mt);
int i; TO = X;
for(i=0; i<M; ++i)
{
v[A[permut[i]]].push_back(B[permut[i]]);
v[B[permut[i]]].push_back(A[permut[i]]);
}
t[root] = -1;
dfs_sel_edges(root);
vector<int> good;
for(i=0; i<N; ++i)
{
good.clear();
for(auto it : v[i])
if(t[it] == i) good.push_back(it);
v[i] = good;
}
for(i=0; i<N; ++i)
sort(v[i].begin(), v[i].end(), cmp);
bit = 0;
dfs(root);
}
#include "Ioi.h"
#include <bits/stdc++.h>
typedef long long ll;
const int Nmax = 30005;
const ll AllBits = (1LL << 60) - 1;
using namespace std;
static bool used[Nmax], to_visit[Nmax];
static vector<int> v[Nmax];
static int bit, root, w[Nmax], t[Nmax], In[Nmax], ord[Nmax], tip[Nmax], tmp, Special;
ll Act, Mask;
static void dfs_sel_edges(int node)
{
used[node] = 1;
w[node] = 1;
for(auto it : v[node])
if(!used[it])
{
t[it] = node;
dfs_sel_edges(it);
w[node] += w[it];
}
}
static void dfs(int node)
{
tip[node] = bit;
In[node] = ++tmp;
ord[tmp] = node;
for(auto it : v[node])
{
bit = (bit+1) % 60;
dfs(it);
ord[++tmp] = node;
}
}
bool cmp(int a, int b)
{
return w[a] < w[b];
}
static void go(int node)
{
to_visit[node] = 0;
for(auto it : v[node])
if(to_visit[it])
{
Act |= (1LL<<tip[it]) * Move(it);
go(it);
Move(node);
}
if(node != root && to_visit[t[node]])
{
Act |= (1LL<<tip[t[node]]) * Move(t[node]);
go(t[node]);
}
}
static ll baga(int node)
{
int i;
for(i=In[node]; (!to_visit[Special] || Mask != AllBits) && i <= tmp; ++i)
to_visit[ord[i]] = 1, Mask |= (1LL << tip[ord[i]]);
/// assert(to_visit[Special] && Mask == AllBits);
go(Special);
return Act;
}
ll Ioi(int N, int M, int A[], int B[], int P, int V, int _T)
{
mt19937 mt(58);
root = uniform_int_distribution<int>(0, N-1)(mt);
vector<int> permut(M);
for(int i = 0; i < M; ++i)
permut[i] = i;
shuffle(begin(permut), end(permut), mt);
Special = P;
int i;
for(i=0; i<M; ++i)
{
v[A[permut[i]]].push_back(B[permut[i]]);
v[B[permut[i]]].push_back(A[permut[i]]);
}
t[root] = -1;
dfs_sel_edges(root);
vector<int> good;
for(i=0; i<N; ++i)
{
good.clear();
for(auto it : v[i])
if(t[it] == i) good.push_back(it);
v[i] = good;
}
for(i=0; i<N; ++i)
sort(v[i].begin(), v[i].end(), cmp);
bit = 0;
dfs(root);
Mask = (1LL << tip[P]);
Act = V * (1LL << tip[P]);
int node = P, sbrb = -1;
while(w[node] < 60) sbrb = node, node = t[node];
// return baga(node);
if(node == P) return baga(P);
assert(sbrb != -1);
vector<int> S;
bool ok = 0; int T = 0;
for(i=0; i<v[node].size(); ++i)
if(v[node][i] == sbrb) ok = 1;
else if(!ok) S.push_back(w[v[node][i]]);
else T += w[v[node][i]];
for(i=(int)S.size()-2; i>=0; --i) S[i] += S[i+1];
for(i=0; i<S.size(); ++i)
if(S[i] + w[sbrb] <= 60 && S[i] + w[sbrb] + T >= 60)
return baga(v[node][i]);
if(w[sbrb] <= 60 && w[sbrb] + T >= 60) return baga(sbrb);
/// assert(T == 0);
for(i=S.size()-1; i>=0; --i)
if(S[i] + w[sbrb] >= 60) return baga(v[node][i]);
return baga(node);
}
Compilation message
Ioi.cpp: In function 'll Ioi(int, int, int*, int*, int, int, int)':
Ioi.cpp:129:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(i=0; i<v[node].size(); ++i)
~^~~~~~~~~~~~~~~
Ioi.cpp:136:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(i=0; i<S.size(); ++i)
~^~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
2168 KB |
Output is correct |
2 |
Correct |
4 ms |
2168 KB |
Output is correct |
3 |
Correct |
4 ms |
2304 KB |
Output is correct |
4 |
Correct |
4 ms |
2168 KB |
Output is correct |
5 |
Correct |
4 ms |
2168 KB |
Output is correct |
6 |
Correct |
4 ms |
2324 KB |
Output is correct |
7 |
Correct |
4 ms |
2272 KB |
Output is correct |
8 |
Correct |
4 ms |
2300 KB |
Output is correct |
9 |
Correct |
4 ms |
2428 KB |
Output is correct |
10 |
Correct |
4 ms |
2196 KB |
Output is correct |
11 |
Correct |
8 ms |
2592 KB |
Output is correct |
12 |
Correct |
5 ms |
2172 KB |
Output is correct |
13 |
Correct |
4 ms |
2164 KB |
Output is correct |
14 |
Correct |
4 ms |
2292 KB |
Output is correct |
15 |
Correct |
4 ms |
2540 KB |
Output is correct |
16 |
Correct |
4 ms |
2548 KB |
Output is correct |
17 |
Correct |
4 ms |
2292 KB |
Output is correct |
18 |
Correct |
4 ms |
2300 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
30 ms |
5592 KB |
Output is correct |
2 |
Correct |
32 ms |
5460 KB |
Output is correct |
3 |
Correct |
30 ms |
5428 KB |
Output is correct |
4 |
Correct |
19 ms |
4144 KB |
Output is correct |
5 |
Correct |
30 ms |
4536 KB |
Output is correct |
6 |
Correct |
32 ms |
4308 KB |
Output is correct |
7 |
Correct |
19 ms |
4436 KB |
Output is correct |
8 |
Correct |
19 ms |
4408 KB |
Output is correct |
9 |
Correct |
19 ms |
4280 KB |
Output is correct |
10 |
Correct |
18 ms |
4280 KB |
Output is correct |
11 |
Correct |
18 ms |
4356 KB |
Output is correct |
12 |
Correct |
18 ms |
3884 KB |
Output is correct |
13 |
Correct |
17 ms |
4004 KB |
Output is correct |
14 |
Correct |
18 ms |
4140 KB |
Output is correct |
15 |
Correct |
19 ms |
4144 KB |
Output is correct |
16 |
Correct |
20 ms |
4228 KB |
Output is correct |
17 |
Correct |
19 ms |
4152 KB |
Output is correct |
18 |
Correct |
19 ms |
4104 KB |
Output is correct |
19 |
Correct |
19 ms |
4144 KB |
Output is correct |
20 |
Correct |
17 ms |
4344 KB |
Output is correct |
21 |
Correct |
17 ms |
4356 KB |
Output is correct |
22 |
Correct |
19 ms |
4448 KB |
Output is correct |
23 |
Correct |
19 ms |
4444 KB |
Output is correct |
24 |
Correct |
19 ms |
4536 KB |
Output is correct |
25 |
Correct |
20 ms |
4408 KB |
Output is correct |
26 |
Correct |
20 ms |
4280 KB |
Output is correct |
27 |
Correct |
20 ms |
4272 KB |
Output is correct |
28 |
Correct |
19 ms |
4408 KB |
Output is correct |
29 |
Correct |
19 ms |
4128 KB |
Output is correct |
30 |
Correct |
19 ms |
4008 KB |
Output is correct |
31 |
Correct |
4 ms |
2168 KB |
Output is correct |
32 |
Correct |
4 ms |
2288 KB |
Output is correct |
33 |
Correct |
4 ms |
2164 KB |
Output is correct |
34 |
Correct |
4 ms |
2208 KB |
Output is correct |
35 |
Correct |
4 ms |
2200 KB |
Output is correct |
36 |
Correct |
4 ms |
2172 KB |
Output is correct |
37 |
Correct |
4 ms |
2196 KB |
Output is correct |
38 |
Correct |
4 ms |
2160 KB |
Output is correct |
39 |
Correct |
6 ms |
2160 KB |
Output is correct |
40 |
Correct |
4 ms |
2168 KB |
Output is correct |
41 |
Correct |
4 ms |
2168 KB |
Output is correct |
42 |
Correct |
4 ms |
2176 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
2160 KB |
Output is correct |
2 |
Correct |
5 ms |
2168 KB |
Output is correct |
3 |
Correct |
4 ms |
2244 KB |
Output is correct |
4 |
Correct |
6 ms |
2576 KB |
Output is correct |
5 |
Correct |
6 ms |
2572 KB |
Output is correct |
6 |
Correct |
6 ms |
2580 KB |
Output is correct |
7 |
Correct |
6 ms |
2580 KB |
Output is correct |
8 |
Correct |
7 ms |
2584 KB |
Output is correct |
9 |
Correct |
17 ms |
4596 KB |
Output is correct |
10 |
Correct |
17 ms |
4656 KB |
Output is correct |
11 |
Correct |
17 ms |
4536 KB |
Output is correct |
12 |
Correct |
4 ms |
2160 KB |
Output is correct |
13 |
Correct |
4 ms |
2160 KB |
Output is correct |
14 |
Correct |
4 ms |
2168 KB |
Output is correct |
15 |
Correct |
4 ms |
2196 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
31 ms |
5448 KB |
Output is correct |
2 |
Correct |
30 ms |
5452 KB |
Output is correct |
3 |
Correct |
31 ms |
5456 KB |
Output is correct |
4 |
Correct |
19 ms |
4152 KB |
Output is correct |
5 |
Correct |
19 ms |
4664 KB |
Output is correct |
6 |
Correct |
20 ms |
4448 KB |
Output is correct |
7 |
Correct |
20 ms |
4360 KB |
Output is correct |
8 |
Correct |
19 ms |
4280 KB |
Output is correct |
9 |
Correct |
19 ms |
4328 KB |
Output is correct |
10 |
Correct |
18 ms |
4408 KB |
Output is correct |
11 |
Correct |
19 ms |
4272 KB |
Output is correct |
12 |
Correct |
17 ms |
3880 KB |
Output is correct |
13 |
Correct |
17 ms |
3908 KB |
Output is correct |
14 |
Correct |
19 ms |
4144 KB |
Output is correct |
15 |
Correct |
19 ms |
4104 KB |
Output is correct |
16 |
Correct |
19 ms |
4256 KB |
Output is correct |
17 |
Correct |
19 ms |
4100 KB |
Output is correct |
18 |
Correct |
19 ms |
4152 KB |
Output is correct |
19 |
Correct |
19 ms |
4028 KB |
Output is correct |
20 |
Correct |
16 ms |
4276 KB |
Output is correct |
21 |
Correct |
16 ms |
4404 KB |
Output is correct |
22 |
Correct |
20 ms |
4272 KB |
Output is correct |
23 |
Correct |
19 ms |
4400 KB |
Output is correct |
24 |
Correct |
20 ms |
4604 KB |
Output is correct |
25 |
Correct |
20 ms |
4400 KB |
Output is correct |
26 |
Correct |
19 ms |
4648 KB |
Output is correct |
27 |
Correct |
19 ms |
4400 KB |
Output is correct |
28 |
Correct |
20 ms |
4664 KB |
Output is correct |
29 |
Correct |
18 ms |
4132 KB |
Output is correct |
30 |
Correct |
19 ms |
4396 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
30 ms |
5444 KB |
Output is correct |
2 |
Correct |
31 ms |
5316 KB |
Output is correct |
3 |
Correct |
31 ms |
5444 KB |
Output is correct |
4 |
Correct |
19 ms |
4144 KB |
Output is correct |
5 |
Correct |
20 ms |
4412 KB |
Output is correct |
6 |
Correct |
19 ms |
4280 KB |
Output is correct |
7 |
Correct |
20 ms |
4160 KB |
Output is correct |
8 |
Correct |
19 ms |
4436 KB |
Output is correct |
9 |
Correct |
19 ms |
4344 KB |
Output is correct |
10 |
Correct |
18 ms |
4352 KB |
Output is correct |
11 |
Correct |
18 ms |
4520 KB |
Output is correct |
12 |
Correct |
17 ms |
3876 KB |
Output is correct |
13 |
Correct |
17 ms |
3872 KB |
Output is correct |
14 |
Correct |
18 ms |
3880 KB |
Output is correct |
15 |
Correct |
19 ms |
4144 KB |
Output is correct |
16 |
Correct |
19 ms |
4016 KB |
Output is correct |
17 |
Correct |
19 ms |
4108 KB |
Output is correct |
18 |
Correct |
19 ms |
4024 KB |
Output is correct |
19 |
Correct |
19 ms |
4268 KB |
Output is correct |
20 |
Correct |
17 ms |
4356 KB |
Output is correct |
21 |
Correct |
17 ms |
4272 KB |
Output is correct |
22 |
Correct |
19 ms |
4144 KB |
Output is correct |
23 |
Correct |
20 ms |
4272 KB |
Output is correct |
24 |
Correct |
20 ms |
4152 KB |
Output is correct |
25 |
Correct |
19 ms |
4484 KB |
Output is correct |
26 |
Correct |
19 ms |
4400 KB |
Output is correct |
27 |
Correct |
19 ms |
4400 KB |
Output is correct |
28 |
Correct |
19 ms |
4400 KB |
Output is correct |
29 |
Correct |
18 ms |
4128 KB |
Output is correct |
30 |
Correct |
19 ms |
4136 KB |
Output is correct |
31 |
Correct |
4 ms |
2160 KB |
Output is correct |
32 |
Correct |
4 ms |
2200 KB |
Output is correct |
33 |
Correct |
4 ms |
2428 KB |
Output is correct |
34 |
Incorrect |
5 ms |
2172 KB |
Output isn't correct |
35 |
Halted |
0 ms |
0 KB |
- |