Submission #710409

# Submission time Handle Problem Language Result Execution time Memory
710409 2023-03-15T08:28:08 Z zyq_ Stray Cat (JOI20_stray) C++17
Compilation error
0 ms 0 KB
#include <bits/stdc++.h>
using namespace std;

vector<pair<int, int> > adjList[200010];
int lonecnt[200010];
int ans[200010];

int lonecolour[] = {0, 1, 1, 0, 0, 1};

void dfs(int x, int dist, int parent = -1){ //ret val is lone seg count
    for(auto it: adjList[x]){
        if(it.first == parent) continue;
        if((x==0 && (int)adjList[x].size()==1)||(x!=0&&(int)adjList[x].size()==2)){
            if(lonecnt[x] != 0){
                lonecnt[it.first] = lonecnt[x]+1;
            }
            else{
                if(dist % 2 == 0){
                    lonecnt[it.first] = 1;
                }
                else{
                    lonecnt[it.first] = 0;
                }
            }
        }
        dfs(it.first, dist+1, x);
    }
}
//weve got the lonecnt time to colour some stuff

void colouring(int x, int prev, int parent = -1){
    for(auto it: adjList[x]){
        if(it.first == parent) continue;
        //start to colour from 0
        if(lonecnt[it.first] == 0){
            ans[it.second] = (prev+1)%2;
        }
        else{
            ans[it.second] = lonecolour[(lonecnt[it.first]-1)%6];
        }
        colouring(it.first, ans[it.second], x);
    }
}

vector::Mark(int N, int M, int A, int B, vector<int> U, vector<int> V){
    //look for lone segments
    for(int a=0; a<M; a++){
        adjList[U[a]].push_back({V[a], a});
        adjList[V[a]].push_back({U[a], a});
    }
    dfs(0, 0);
    colouring(0, 1);
    int ret[M];
    for(int a=0; a<M; a++) ret[a] = ans[a];
    return ret;
}
#include <bits/stdc++.h>
using namespace std;

bool resolved;
int prev1, prev2, prev3, prev4, prev5, prev6;

void Init(){
    resolved = false;
    prev1 = prev2 = prev3 = prev4 = prev5 = prev6 = -1;
}

int Move(vector<int> y){
    //check LOL
    if(resolved){
        //keep moving in different
        if(prev1 == 0){
            prev1 = 1;
            return 1;
        }
        else{
            prev1 = 0;
            return 0;
        }
    }
    else{
        //check if current place is good ?
        if(y[0] + y[1] == 1){
            resolved = true;
            if(y[0] == 1){
                prev1 = 0;
                return 0;
            }
            else{
                prev1 = 1;
                return 1;
            }
        }
        if(y[0] + y[1] > 2){
            if(y[0] == 1){
                resolved = true;
                prev1 = 0;
                return 0;
            }
            else{
                resolved = true;
                prev1 = 1;
                return 1;
            }
        }
        //now is when on lone
        //start moving
        if(prev1 == -1){
            //first step
            return 0;
        }
        else{
            //not first step
            prev6 = prev5;
            prev5 = prev4;
            prev4 = prev3;
            prev3 = prev2;
            prev2 = prev1;
            //look at prev2
            if(y[0] == 2){
                prev1 = 0;
            }
            else if(y[1] == 2){
                prev1 = 1;
            }
            else{
                if(prev2 == 1){
                    prev1 = 0;
                }
                else{
                    prev1 = 1;
                }
            }
            if(prev1 != prev2 && prev3 == prev4 && prev3 != -1){
                resolved = true;
                if(prev3 = 0){
                    //rightdirectoin
                    return prev1;
                }
                else{
                    return -1;
                }
            }
            else{
                return prev1;
            }
        }
    }
}

Compilation message

Anthony.cpp:45:7: error: deduced class type 'vector' in function return type
   45 | vector::Mark(int N, int M, int A, int B, vector<int> U, vector<int> V){
      |       ^~
In file included from /usr/include/c++/10/vector:67,
                 from /usr/include/c++/10/functional:62,
                 from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
                 from /usr/include/c++/10/algorithm:74,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from Anthony.cpp:1:
/usr/include/c++/10/bits/stl_vector.h:389:11: note: 'template<class _Tp, class _Alloc> class std::vector' declared here
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~

Catherine.cpp: In function 'int Move(std::vector<int>)':
Catherine.cpp:80:26: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   80 |                 if(prev3 = 0){
      |                    ~~~~~~^~~
/usr/bin/ld: /tmp/cc91FogG.o: in function `main':
grader_catherine.cpp:(.text.startup+0x41c): undefined reference to `Init(int, int)'
collect2: error: ld returned 1 exit status