#include "Joi.h"
#include <bits/stdc++.h>
using namespace std;
struct node{
int idx = -1, visited = 0, val=0, before;
vector<int> adj;
} nodes[200069];
vector<int> BinaryConvert(long long X){
vector<int> res;
while(X > 0){
res.push_back(X % 2);
X/=2;
}
while(res.size()<60) res.push_back(0);
return res;
}
int id=0; vector<int> bit;
void dfs(int idBefore, int idNow){
node now= nodes[idNow];
if(now.visited == 1) return;
nodes[idNow].visited = 1;
nodes[idNow].idx = id++;
nodes[idNow].val = bit[nodes[idNow].idx % 60];
// cout<<"Message "<<nodes[idNow].idx<< " : "<<nodes[idNow].val<<endl;
MessageBoard(idNow, nodes[idNow].val);
nodes[idNow].before= idBefore;
for(int i=0;i<nodes[idNow].adj.size();i++){
dfs(idNow, nodes[idNow].adj[i]);
}
}
int par[200069];
int findParent(int x){
if(x==par[x]) return x;
return findParent(par[x]);
}
void Joi(int N, int M, int A[], int B[], long long X, int T) {
bit = BinaryConvert(X);
for(int i=0;i<N;i++) par[i]=i;
for(int i=0;i<M;i++){
if(findParent(A[i])!=findParent(B[i])){
// cout<<A[i]<<" - "<<B[i]<<endl;
nodes[A[i]].adj.push_back(B[i]);
nodes[B[i]].adj.push_back(A[i]);
par[findParent(B[i])] = findParent(A[i]);
}
}
//DFS dulu ges di node 0
dfs(-1,0);
}
#include "Ioi.h"
#include <bits/stdc++.h>
using namespace std;
struct node2{
int idx = -1, visited = 0, val, before=-1, counted = 0;
vector<int> adj;
} nodes2[200069];
int id2=0, bit2[60], countt2=0;
void dfs2(int idBefore, int idNow){
if(nodes2[idNow].visited) return;
nodes2[idNow].visited=1;
nodes2[idNow].idx = id2++;
nodes2[idNow].before= idBefore;
for(int i=0;i<nodes2[idNow].adj.size();i++){
dfs2(idNow, nodes2[idNow].adj[i]);
}
}
void solveDFS(int idNow, int bitInside){
node2 now = nodes2[idNow];
// cout<<now.idx<<endl;
// cout<<"track count: "<<countt2<<"and now.before "<<now.before<<endl;
if(!nodes2[idNow].counted){
if(bit2[now.idx % 60] == -1) countt2++;
bit2[now.idx % 60] = bitInside;
// cout<<now.idx<<" "<<bit2[idNow]<<endl;
nodes2[idNow].counted = 1;
for(int i=0;i<now.adj.size();i++){
if (now.adj[i]==now.before) continue;
if(!nodes2[now.adj[i]].counted) {
solveDFS(now.adj[i], Move(now.adj[i]));
if(countt2<60) Move(idNow);
else return;
}
}
//kalau uda cek semua anak"nya ya pindah ke ibunya diatas 1
// if(idNow==5) cout<<"before 5"<<now.before<<endl;
if(now.before != -1){
if(!nodes2[now.before].counted && countt2<60){
// cout<<"use here";
solveDFS(now.before, Move(now.before));
}
}
}
}
int par2[200069];
int findParent2(int x){
if(x==par2[x]) return x;
return findParent2(par2[x]);
}
long long Ioi(int N, int M, int A[], int B[], int P, int V, int T) {
for(int i=0;i<N;i++) par2[i]=i;
for(int i=0;i<M;i++){
if(findParent2(A[i])!=findParent2(B[i])){
nodes2[A[i]].adj.push_back(B[i]);
nodes2[B[i]].adj.push_back(A[i]);
par2[findParent2(B[i])] = findParent2(A[i]);
}
}
//DFS dulu ges di node 0
dfs2(-1,0);
//Solve
memset(bit2, -1, sizeof(bit2));
solveDFS(P,V);
//Convert to decimal
long long key = 1, res= 0;
for(int i=0;i<60;i++){
res += bit2[i] * key;
key*=2;
}
return res;
}
Compilation message
Joi.cpp: In function 'void dfs(int, int)':
Joi.cpp:36:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
36 | for(int i=0;i<nodes[idNow].adj.size();i++){
| ~^~~~~~~~~~~~~~~~~~~~~~~~
Ioi.cpp: In function 'void dfs2(int, int)':
Ioi.cpp:19:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
19 | for(int i=0;i<nodes2[idNow].adj.size();i++){
| ~^~~~~~~~~~~~~~~~~~~~~~~~~
Ioi.cpp: In function 'void solveDFS(int, int)':
Ioi.cpp:35:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
35 | for(int i=0;i<now.adj.size();i++){
| ~^~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
10 ms |
17948 KB |
Output is correct |
2 |
Correct |
11 ms |
17860 KB |
Output is correct |
3 |
Correct |
11 ms |
17936 KB |
Output is correct |
4 |
Correct |
10 ms |
17936 KB |
Output is correct |
5 |
Correct |
11 ms |
17936 KB |
Output is correct |
6 |
Correct |
10 ms |
17936 KB |
Output is correct |
7 |
Correct |
10 ms |
17936 KB |
Output is correct |
8 |
Correct |
10 ms |
17940 KB |
Output is correct |
9 |
Correct |
10 ms |
17936 KB |
Output is correct |
10 |
Correct |
10 ms |
17952 KB |
Output is correct |
11 |
Correct |
12 ms |
18120 KB |
Output is correct |
12 |
Correct |
10 ms |
17936 KB |
Output is correct |
13 |
Correct |
10 ms |
17952 KB |
Output is correct |
14 |
Correct |
11 ms |
17944 KB |
Output is correct |
15 |
Correct |
9 ms |
17952 KB |
Output is correct |
16 |
Correct |
10 ms |
17944 KB |
Output is correct |
17 |
Correct |
11 ms |
17968 KB |
Output is correct |
18 |
Correct |
10 ms |
17952 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
149 ms |
20080 KB |
Output is correct |
2 |
Correct |
153 ms |
19840 KB |
Output is correct |
3 |
Correct |
157 ms |
19964 KB |
Output is correct |
4 |
Correct |
29 ms |
19488 KB |
Output is correct |
5 |
Correct |
24 ms |
20516 KB |
Output is correct |
6 |
Correct |
25 ms |
20144 KB |
Output is correct |
7 |
Correct |
25 ms |
20132 KB |
Output is correct |
8 |
Correct |
22 ms |
20392 KB |
Output is correct |
9 |
Correct |
22 ms |
20240 KB |
Output is correct |
10 |
Correct |
266 ms |
19672 KB |
Output is correct |
11 |
Correct |
258 ms |
19740 KB |
Output is correct |
12 |
Correct |
25 ms |
19500 KB |
Output is correct |
13 |
Correct |
23 ms |
19488 KB |
Output is correct |
14 |
Correct |
23 ms |
19496 KB |
Output is correct |
15 |
Correct |
32 ms |
19488 KB |
Output is correct |
16 |
Correct |
33 ms |
19500 KB |
Output is correct |
17 |
Correct |
27 ms |
19492 KB |
Output is correct |
18 |
Correct |
28 ms |
19444 KB |
Output is correct |
19 |
Correct |
25 ms |
19492 KB |
Output is correct |
20 |
Correct |
24 ms |
20488 KB |
Output is correct |
21 |
Correct |
19 ms |
20516 KB |
Output is correct |
22 |
Correct |
25 ms |
20000 KB |
Output is correct |
23 |
Correct |
24 ms |
20272 KB |
Output is correct |
24 |
Correct |
24 ms |
20100 KB |
Output is correct |
25 |
Correct |
22 ms |
20416 KB |
Output is correct |
26 |
Correct |
22 ms |
20312 KB |
Output is correct |
27 |
Correct |
23 ms |
20396 KB |
Output is correct |
28 |
Correct |
20 ms |
20380 KB |
Output is correct |
29 |
Correct |
22 ms |
20104 KB |
Output is correct |
30 |
Correct |
24 ms |
20072 KB |
Output is correct |
31 |
Correct |
11 ms |
17940 KB |
Output is correct |
32 |
Correct |
10 ms |
17940 KB |
Output is correct |
33 |
Correct |
11 ms |
17940 KB |
Output is correct |
34 |
Correct |
10 ms |
17948 KB |
Output is correct |
35 |
Correct |
11 ms |
17940 KB |
Output is correct |
36 |
Correct |
10 ms |
17980 KB |
Output is correct |
37 |
Correct |
10 ms |
17828 KB |
Output is correct |
38 |
Correct |
11 ms |
17948 KB |
Output is correct |
39 |
Correct |
11 ms |
17944 KB |
Output is correct |
40 |
Correct |
10 ms |
17940 KB |
Output is correct |
41 |
Correct |
10 ms |
17948 KB |
Output is correct |
42 |
Correct |
9 ms |
17944 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
17940 KB |
Output is correct |
2 |
Correct |
9 ms |
17936 KB |
Output is correct |
3 |
Correct |
10 ms |
17944 KB |
Output is correct |
4 |
Incorrect |
13 ms |
18484 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
149 ms |
20036 KB |
Output is correct |
2 |
Partially correct |
156 ms |
20212 KB |
Partially correct |
3 |
Correct |
156 ms |
20320 KB |
Output is correct |
4 |
Correct |
24 ms |
19512 KB |
Output is correct |
5 |
Correct |
23 ms |
21016 KB |
Output is correct |
6 |
Correct |
24 ms |
20388 KB |
Output is correct |
7 |
Correct |
22 ms |
20264 KB |
Output is correct |
8 |
Correct |
24 ms |
20012 KB |
Output is correct |
9 |
Correct |
24 ms |
20160 KB |
Output is correct |
10 |
Correct |
272 ms |
19612 KB |
Output is correct |
11 |
Correct |
266 ms |
19648 KB |
Output is correct |
12 |
Correct |
23 ms |
19432 KB |
Output is correct |
13 |
Correct |
20 ms |
19484 KB |
Output is correct |
14 |
Correct |
22 ms |
19432 KB |
Output is correct |
15 |
Partially correct |
30 ms |
19484 KB |
Partially correct |
16 |
Correct |
32 ms |
19496 KB |
Output is correct |
17 |
Partially correct |
28 ms |
19544 KB |
Partially correct |
18 |
Partially correct |
26 ms |
19492 KB |
Partially correct |
19 |
Correct |
26 ms |
19496 KB |
Output is correct |
20 |
Correct |
19 ms |
20532 KB |
Output is correct |
21 |
Correct |
19 ms |
20524 KB |
Output is correct |
22 |
Correct |
23 ms |
20176 KB |
Output is correct |
23 |
Correct |
22 ms |
20140 KB |
Output is correct |
24 |
Correct |
24 ms |
20088 KB |
Output is correct |
25 |
Correct |
23 ms |
20384 KB |
Output is correct |
26 |
Correct |
23 ms |
20224 KB |
Output is correct |
27 |
Correct |
23 ms |
20576 KB |
Output is correct |
28 |
Correct |
22 ms |
20080 KB |
Output is correct |
29 |
Correct |
24 ms |
19948 KB |
Output is correct |
30 |
Correct |
23 ms |
20120 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
154 ms |
20108 KB |
Output is correct |
2 |
Correct |
155 ms |
20276 KB |
Output is correct |
3 |
Correct |
152 ms |
20132 KB |
Output is correct |
4 |
Incorrect |
27 ms |
19520 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |