#include "Anthony.h"
#include <bits/stdc++.h>
#define debug //printf
#define pii pair<int,int>
#define ff first
#define ss second
#define mk make_pair
#define sz(x) (int)(x.size() )
#define ll long long
#define all(x) x.begin(),x.end()
const int MAXN = 2e4+10 ;
using namespace std ;
vector<pii> adj[MAXN] ;
int marcas[MAXN] , dist[MAXN] ;
int seq[6] = {0,1,0,0,1,1} ;
void dfs(int x, int father , int curIdx , int dist = 1 ) //curIdx eh o que eu tenho que colocar nas minhas proximas arestas
{
if( sz(adj[x]) != 2 ) curIdx = !seq[curIdx] ;
else curIdx = (curIdx == 5) ? 0 : (curIdx+1) ;
for(auto e : adj[x] )
{
if(e.ff == father ) continue ;
marcas[e.ss] = seq[curIdx] ;
dfs(e.ff, x, curIdx , dist+1 ) ;
}
}
vector<int> Mark(int N, int M, int A, int B, vector<int> U, vector<int> V)
{
for(int i = 0 ; i < M ; i++ )
{
adj[ U[i] ].push_back(mk(V[i] , i ) ) ;
adj[ V[i] ].push_back( mk(U[i],i) ) ;
}
if(A >= 3 )
{
//Constroi a arvore da bfs
for(int i = 1 ; i < N ; i++ ) dist[i] = -1 ;
vector<int> fila ;
int ini = 0 ;
fila.push_back(0) ;
while(ini < sz(fila) )
{
int x = fila[ini++] ;
for(auto e : adj[x] )
{
if(dist[e.ff] != -1 ) continue ;
fila.push_back(e.ff) ;
dist[e.ff] = dist[x] + 1 ;
}
}
for(int i = 0 ; i < M ; i++ )
{
int a = U[i] ;
int b = V[i] ;
if( dist[a] == dist[b] ) marcas[i] = dist[a] % 3 ;
else marcas[i] = min(dist[a] , dist[b] ) % 3 ;
}
}
else
{
for(auto neigh : adj[0] )
{
marcas[neigh.ss] = 0 ;
dfs(neigh.ff, 0, 0 ) ;
}
}
for(int i = 0 ; i < M ; i++ ) debug("Pintei %d %d de %d\n", U[i] , V[i] , marcas[i] ) ;
vector<int> answer(M,0) ;
for(int i = 0 ; i < M; i++ ) answer[i] = marcas[i] ;
return answer ;
}
#include "Catherine.h"
#include <bits/stdc++.h>
#define debug //printf
#define sz(x) (int)(x.size())
#define all(x) x.begin(),x.end()
#define ff first
#define ss second
#define pb push_back
#define mk make_pair
#define pii pair<int,int>
using namespace std ;
set< string > reversedOrder ;
bool is3 ;
void Init(int A, int B)
{
string seq = "010011" ;
if(A >= 3 ) is3 = true ;
//Creating reversedOrder
for(int i = 0 ,ant = 5 ; i < 6 ; i++ , ant++ )
{
if(ant == 6 ) ant = 0 ;
string str ;
for(int j = i; j != ant ; j = (j == 5 ) ? 0 : (j+1) )
str.push_back(seq[j] ) ;
reversedOrder.insert(str) ;
}
}
bool justGo , isFirst = true ;
int wentBefore ;
string str ;
int Move(vector<int> y)
{
if(is3)
{
int qtdNeigh = (y[0] > 0 ) + (y[1] > 0 ) + (y[2] > 0 ) ;
if(qtdNeigh == 1 )
{
for(int i = 0 ; i < 3 ; i++ )
if(y[i] > 0 ) return i ;
}
if(y[0] > 0 && y[1] > 0 ) return 0 ;
if(y[1] > 0 && y[2] > 0 ) return 1 ;
if(y[2] >0 && y[0] > 0 ) return 2 ;
}
debug("meu vetor ta %d %d e justGo eh %d\n", y[0] , y[1] , justGo) ;
int qtdNeigh = y[0] + y[1] ;
if(qtdNeigh == 0)
{
justGo = true ;
return -1 ;
}
if(isFirst)
{
isFirst = false ;
if(qtdNeigh == 1 )
{
wentBefore = (y[0] == 1 ) ? 0 : 1 ;
justGo = true ;
return wentBefore ;
}
if(qtdNeigh == 2 )
{
if( y[0] && y[1] )
{
str.push_back('0') ;
str.push_back('1') ;
wentBefore = 1 ;
return 1 ;
}
int idx = (y[0] > y[1] ) ? 0 : 1 ;
str.push_back('0' + idx ) ;
str.push_back('0' + idx ) ;
wentBefore = idx ;
return idx ;
}
wentBefore = (y[0] < y[1] ) ? 0 : 1 ;
justGo = true ;
return wentBefore ;
}
if(justGo)
{
if( qtdNeigh == 1 )
{
wentBefore = (y[0] > y[1] ) ? 0 : 1 ;
return wentBefore ;
}
wentBefore = !wentBefore ;
return wentBefore ;
}
if(qtdNeigh > 1 )
{
justGo = true ;
if(y[!wentBefore] != 1 ) return -1 ;
wentBefore = !wentBefore;
return wentBefore;
}
//Ainda estou presa na corrente
str.push_back( '0' + ( (y[0] == 1) ? 0 : 1 ) ) ;
if(sz(str) == 5 )
{
justGo = true ;
if( reversedOrder.find(str) != reversedOrder.end() ) return -1 ;
else
{
wentBefore = (y[0] == 1 ) ? 0 : 1 ;
return wentBefore ;
}
}
wentBefore = (y[0] == 1 ) ? 0 : 1 ;
return wentBefore ;
}
Compilation message
Anthony.cpp: In function 'std::vector<int> Mark(int, int, int, int, std::vector<int>, std::vector<int>)':
Anthony.cpp:97:38: warning: left operand of comma operator has no effect [-Wunused-value]
97 | for(int i = 0 ; i < M ; i++ ) debug("Pintei %d %d de %d\n", U[i] , V[i] , marcas[i] ) ;
| ^~~~~~~~~~~~~~~~~~~~~~
Catherine.cpp: In function 'int Move(std::vector<int>)':
Catherine.cpp:62:8: warning: left operand of comma operator has no effect [-Wunused-value]
62 | debug("meu vetor ta %d %d e justGo eh %d\n", y[0] , y[1] , justGo) ;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
55 ms |
15832 KB |
Output is correct |
2 |
Correct |
2 ms |
1536 KB |
Output is correct |
3 |
Correct |
43 ms |
15268 KB |
Output is correct |
4 |
Correct |
69 ms |
16836 KB |
Output is correct |
5 |
Correct |
69 ms |
16976 KB |
Output is correct |
6 |
Correct |
51 ms |
15592 KB |
Output is correct |
7 |
Correct |
51 ms |
15588 KB |
Output is correct |
8 |
Correct |
63 ms |
16380 KB |
Output is correct |
9 |
Correct |
60 ms |
16384 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
55 ms |
15832 KB |
Output is correct |
2 |
Correct |
2 ms |
1536 KB |
Output is correct |
3 |
Correct |
43 ms |
15268 KB |
Output is correct |
4 |
Correct |
69 ms |
16836 KB |
Output is correct |
5 |
Correct |
69 ms |
16976 KB |
Output is correct |
6 |
Correct |
51 ms |
15592 KB |
Output is correct |
7 |
Correct |
51 ms |
15588 KB |
Output is correct |
8 |
Correct |
63 ms |
16380 KB |
Output is correct |
9 |
Correct |
60 ms |
16384 KB |
Output is correct |
10 |
Correct |
48 ms |
13612 KB |
Output is correct |
11 |
Correct |
46 ms |
13864 KB |
Output is correct |
12 |
Correct |
48 ms |
13856 KB |
Output is correct |
13 |
Correct |
48 ms |
14088 KB |
Output is correct |
14 |
Correct |
48 ms |
14372 KB |
Output is correct |
15 |
Correct |
58 ms |
14752 KB |
Output is correct |
16 |
Correct |
57 ms |
16780 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
53 ms |
13308 KB |
Output is correct |
2 |
Correct |
2 ms |
1536 KB |
Output is correct |
3 |
Correct |
43 ms |
13096 KB |
Output is correct |
4 |
Correct |
65 ms |
14640 KB |
Output is correct |
5 |
Correct |
62 ms |
14500 KB |
Output is correct |
6 |
Correct |
49 ms |
13412 KB |
Output is correct |
7 |
Correct |
47 ms |
13396 KB |
Output is correct |
8 |
Correct |
60 ms |
14068 KB |
Output is correct |
9 |
Correct |
59 ms |
13988 KB |
Output is correct |
10 |
Correct |
52 ms |
13868 KB |
Output is correct |
11 |
Correct |
54 ms |
14072 KB |
Output is correct |
12 |
Correct |
53 ms |
13740 KB |
Output is correct |
13 |
Correct |
54 ms |
13948 KB |
Output is correct |
14 |
Correct |
56 ms |
14116 KB |
Output is correct |
15 |
Correct |
59 ms |
13988 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
53 ms |
13308 KB |
Output is correct |
2 |
Correct |
2 ms |
1536 KB |
Output is correct |
3 |
Correct |
43 ms |
13096 KB |
Output is correct |
4 |
Correct |
65 ms |
14640 KB |
Output is correct |
5 |
Correct |
62 ms |
14500 KB |
Output is correct |
6 |
Correct |
49 ms |
13412 KB |
Output is correct |
7 |
Correct |
47 ms |
13396 KB |
Output is correct |
8 |
Correct |
60 ms |
14068 KB |
Output is correct |
9 |
Correct |
59 ms |
13988 KB |
Output is correct |
10 |
Correct |
52 ms |
13868 KB |
Output is correct |
11 |
Correct |
54 ms |
14072 KB |
Output is correct |
12 |
Correct |
53 ms |
13740 KB |
Output is correct |
13 |
Correct |
54 ms |
13948 KB |
Output is correct |
14 |
Correct |
56 ms |
14116 KB |
Output is correct |
15 |
Correct |
59 ms |
13988 KB |
Output is correct |
16 |
Correct |
40 ms |
11696 KB |
Output is correct |
17 |
Correct |
41 ms |
11896 KB |
Output is correct |
18 |
Correct |
47 ms |
12180 KB |
Output is correct |
19 |
Correct |
44 ms |
12200 KB |
Output is correct |
20 |
Correct |
52 ms |
12680 KB |
Output is correct |
21 |
Correct |
48 ms |
12580 KB |
Output is correct |
22 |
Correct |
58 ms |
14668 KB |
Output is correct |
23 |
Correct |
48 ms |
12320 KB |
Output is correct |
24 |
Correct |
45 ms |
12332 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
1536 KB |
Output is correct |
2 |
Correct |
1 ms |
1536 KB |
Output is correct |
3 |
Correct |
2 ms |
1536 KB |
Output is correct |
4 |
Correct |
2 ms |
1792 KB |
Output is correct |
5 |
Correct |
3 ms |
1792 KB |
Output is correct |
6 |
Correct |
3 ms |
1792 KB |
Output is correct |
7 |
Correct |
2 ms |
1792 KB |
Output is correct |
8 |
Correct |
2 ms |
1792 KB |
Output is correct |
9 |
Correct |
2 ms |
1792 KB |
Output is correct |
10 |
Correct |
2 ms |
1792 KB |
Output is correct |
11 |
Correct |
2 ms |
1792 KB |
Output is correct |
12 |
Correct |
2 ms |
1792 KB |
Output is correct |
13 |
Correct |
2 ms |
1792 KB |
Output is correct |
14 |
Correct |
2 ms |
1792 KB |
Output is correct |
15 |
Correct |
2 ms |
1792 KB |
Output is correct |
16 |
Correct |
2 ms |
1792 KB |
Output is correct |
17 |
Correct |
2 ms |
1536 KB |
Output is correct |
18 |
Correct |
2 ms |
1792 KB |
Output is correct |
19 |
Correct |
2 ms |
1536 KB |
Output is correct |
20 |
Correct |
2 ms |
1536 KB |
Output is correct |
21 |
Correct |
2 ms |
1536 KB |
Output is correct |
22 |
Correct |
2 ms |
1536 KB |
Output is correct |
23 |
Correct |
2 ms |
1536 KB |
Output is correct |
24 |
Correct |
2 ms |
1536 KB |
Output is correct |
25 |
Correct |
2 ms |
1536 KB |
Output is correct |
26 |
Correct |
2 ms |
1792 KB |
Output is correct |
27 |
Correct |
2 ms |
1796 KB |
Output is correct |
28 |
Correct |
2 ms |
1792 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
46 ms |
11580 KB |
Output is correct |
2 |
Correct |
53 ms |
12672 KB |
Output is correct |
3 |
Correct |
2 ms |
1536 KB |
Output is correct |
4 |
Correct |
38 ms |
11256 KB |
Output is correct |
5 |
Correct |
66 ms |
14304 KB |
Output is correct |
6 |
Correct |
63 ms |
14156 KB |
Output is correct |
7 |
Correct |
50 ms |
13408 KB |
Output is correct |
8 |
Correct |
51 ms |
13396 KB |
Output is correct |
9 |
Correct |
59 ms |
14100 KB |
Output is correct |
10 |
Correct |
61 ms |
14280 KB |
Output is correct |
11 |
Correct |
62 ms |
14288 KB |
Output is correct |
12 |
Correct |
64 ms |
14068 KB |
Output is correct |
13 |
Correct |
64 ms |
14288 KB |
Output is correct |
14 |
Correct |
63 ms |
14188 KB |
Output is correct |
15 |
Correct |
61 ms |
14176 KB |
Output is correct |
16 |
Correct |
61 ms |
14260 KB |
Output is correct |
17 |
Correct |
56 ms |
13820 KB |
Output is correct |
18 |
Correct |
60 ms |
13908 KB |
Output is correct |
19 |
Correct |
56 ms |
13924 KB |
Output is correct |
20 |
Correct |
55 ms |
13908 KB |
Output is correct |
21 |
Correct |
54 ms |
13812 KB |
Output is correct |
22 |
Correct |
59 ms |
13948 KB |
Output is correct |
23 |
Correct |
44 ms |
11620 KB |
Output is correct |
24 |
Correct |
44 ms |
11624 KB |
Output is correct |
25 |
Correct |
48 ms |
11948 KB |
Output is correct |
26 |
Correct |
45 ms |
11900 KB |
Output is correct |
27 |
Correct |
52 ms |
12804 KB |
Output is correct |
28 |
Correct |
57 ms |
12916 KB |
Output is correct |
29 |
Correct |
57 ms |
12796 KB |
Output is correct |
30 |
Correct |
52 ms |
13044 KB |
Output is correct |
31 |
Correct |
47 ms |
11388 KB |
Output is correct |
32 |
Correct |
46 ms |
11652 KB |
Output is correct |
33 |
Correct |
45 ms |
11980 KB |
Output is correct |
34 |
Correct |
45 ms |
11900 KB |
Output is correct |
35 |
Correct |
51 ms |
12728 KB |
Output is correct |
36 |
Correct |
51 ms |
12740 KB |
Output is correct |
37 |
Correct |
51 ms |
12744 KB |
Output is correct |
38 |
Correct |
51 ms |
12744 KB |
Output is correct |
39 |
Correct |
53 ms |
12668 KB |
Output is correct |
40 |
Correct |
51 ms |
12756 KB |
Output is correct |
41 |
Correct |
61 ms |
13504 KB |
Output is correct |
42 |
Correct |
55 ms |
13424 KB |
Output is correct |
43 |
Correct |
54 ms |
13416 KB |
Output is correct |
44 |
Correct |
55 ms |
13428 KB |
Output is correct |
45 |
Correct |
55 ms |
13300 KB |
Output is correct |
46 |
Correct |
57 ms |
13432 KB |
Output is correct |
47 |
Correct |
49 ms |
12284 KB |
Output is correct |
48 |
Correct |
53 ms |
12412 KB |
Output is correct |
49 |
Correct |
48 ms |
12308 KB |
Output is correct |
50 |
Correct |
49 ms |
12412 KB |
Output is correct |
51 |
Correct |
48 ms |
11656 KB |
Output is correct |
52 |
Correct |
45 ms |
11700 KB |
Output is correct |
53 |
Correct |
46 ms |
11904 KB |
Output is correct |
54 |
Correct |
45 ms |
11712 KB |
Output is correct |
55 |
Correct |
46 ms |
11692 KB |
Output is correct |
56 |
Correct |
45 ms |
11636 KB |
Output is correct |
57 |
Correct |
47 ms |
11960 KB |
Output is correct |
58 |
Correct |
45 ms |
11772 KB |
Output is correct |
59 |
Correct |
45 ms |
11740 KB |
Output is correct |
60 |
Correct |
47 ms |
11608 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
45 ms |
11516 KB |
Output is correct |
2 |
Correct |
49 ms |
12412 KB |
Output is correct |
3 |
Correct |
1 ms |
1536 KB |
Output is correct |
4 |
Correct |
42 ms |
11312 KB |
Output is correct |
5 |
Correct |
58 ms |
14068 KB |
Output is correct |
6 |
Correct |
59 ms |
14284 KB |
Output is correct |
7 |
Correct |
53 ms |
13396 KB |
Output is correct |
8 |
Correct |
48 ms |
13180 KB |
Output is correct |
9 |
Correct |
62 ms |
14196 KB |
Output is correct |
10 |
Correct |
58 ms |
14284 KB |
Output is correct |
11 |
Correct |
60 ms |
14172 KB |
Output is correct |
12 |
Correct |
60 ms |
14428 KB |
Output is correct |
13 |
Correct |
60 ms |
14284 KB |
Output is correct |
14 |
Correct |
62 ms |
14276 KB |
Output is correct |
15 |
Correct |
58 ms |
14212 KB |
Output is correct |
16 |
Correct |
62 ms |
14152 KB |
Output is correct |
17 |
Correct |
58 ms |
13936 KB |
Output is correct |
18 |
Correct |
55 ms |
13908 KB |
Output is correct |
19 |
Correct |
58 ms |
13812 KB |
Output is correct |
20 |
Correct |
56 ms |
13692 KB |
Output is correct |
21 |
Correct |
55 ms |
13852 KB |
Output is correct |
22 |
Correct |
56 ms |
13692 KB |
Output is correct |
23 |
Correct |
46 ms |
11868 KB |
Output is correct |
24 |
Correct |
45 ms |
11628 KB |
Output is correct |
25 |
Correct |
46 ms |
11772 KB |
Output is correct |
26 |
Correct |
46 ms |
12088 KB |
Output is correct |
27 |
Correct |
54 ms |
12912 KB |
Output is correct |
28 |
Correct |
55 ms |
12800 KB |
Output is correct |
29 |
Correct |
54 ms |
12792 KB |
Output is correct |
30 |
Correct |
56 ms |
12904 KB |
Output is correct |
31 |
Correct |
44 ms |
11680 KB |
Output is correct |
32 |
Correct |
46 ms |
11524 KB |
Output is correct |
33 |
Correct |
47 ms |
12100 KB |
Output is correct |
34 |
Correct |
46 ms |
11900 KB |
Output is correct |
35 |
Correct |
52 ms |
12872 KB |
Output is correct |
36 |
Correct |
51 ms |
12652 KB |
Output is correct |
37 |
Correct |
52 ms |
12744 KB |
Output is correct |
38 |
Correct |
52 ms |
12748 KB |
Output is correct |
39 |
Correct |
54 ms |
12732 KB |
Output is correct |
40 |
Correct |
55 ms |
12812 KB |
Output is correct |
41 |
Correct |
54 ms |
13428 KB |
Output is correct |
42 |
Correct |
54 ms |
13392 KB |
Output is correct |
43 |
Correct |
56 ms |
13464 KB |
Output is correct |
44 |
Correct |
55 ms |
13560 KB |
Output is correct |
45 |
Correct |
53 ms |
13556 KB |
Output is correct |
46 |
Correct |
55 ms |
13436 KB |
Output is correct |
47 |
Correct |
52 ms |
12612 KB |
Output is correct |
48 |
Correct |
50 ms |
12452 KB |
Output is correct |
49 |
Correct |
48 ms |
12452 KB |
Output is correct |
50 |
Correct |
55 ms |
12620 KB |
Output is correct |
51 |
Correct |
49 ms |
11700 KB |
Output is correct |
52 |
Correct |
44 ms |
11704 KB |
Output is correct |
53 |
Correct |
45 ms |
11708 KB |
Output is correct |
54 |
Correct |
44 ms |
11708 KB |
Output is correct |
55 |
Correct |
54 ms |
11516 KB |
Output is correct |
56 |
Correct |
45 ms |
11516 KB |
Output is correct |
57 |
Correct |
46 ms |
11644 KB |
Output is correct |
58 |
Correct |
47 ms |
11852 KB |
Output is correct |
59 |
Correct |
49 ms |
11644 KB |
Output is correct |
60 |
Correct |
50 ms |
11588 KB |
Output is correct |