Submission #1347254

#TimeUsernameProblemLanguageResultExecution timeMemory
1347254hridoyCats or Dogs (JOI18_catdog)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

int n;
vector<int> adj[100005];
int state[100005];


void dfs(int node, int parent, bool &hasCat, bool &hasDog)
 {
    if (state[node] == 1) hasCat = true;
    if (state[node] == 2) hasDog = true;

    for (int next : adj[node]) 
{
        if (next != parent)
 {
            dfs(next, node, hasCat, hasDog);
        }
    }
}

int calculateDanger()
 {
 
    
    int danger = 0;
    
  
    for (int u = 1; u <= n; u++)
 {
        for (int v : adj[u]) {
            if (u < v) { 
                
             
                bool catU = false, dogU = false;
                dfs(u, v, catU, dogU);
                
           
                bool catV = false, dogV = false;
                dfs(v, u, catV, dogV);
                
            
                if ((catU && dogV) || (dogU && catV)) 
{
                    danger++;
                }
            }
        }
    }
    
    return danger;
}


int A_arr[100005], B_arr[100005];

void initialize(int N, int A[], int B[])
 {
    n = N;
    for (int i = 0; i < N - 1; i++)
 {
        adj[A[i]].push_back(B[i]);
        adj[B[i]].push_back(A[i]);
    }
    fill(state + 1, state + N + 1, 0);
}

int cat(int v) {
    state[v] = 1;
    return calculateDanger();
}

int dog(int v) {
    state[v] = 2;
    return calculateDanger();
}

int neighbor(int v) {
    state[v] = 0;
    return calculateDanger();
}


int main() {
    int N;
    cin >> N;

    int A[N], B[N];
    for (int i = 0; i < N - 1; i++) {
        cin >> A[i] >> B[i];
    }

    initialize(N, A, B);

    int Q;
    cin >> Q;

    while (Q--) {
        int type, v;
        cin >> type >> v;

        int result;
        if (type == 1) result = cat(v);
        else if (type == 2) result = dog(v);
        else result = neighbor(v);

        cout << result << "\n";
    }

    return 0;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccRbEcmx.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccQRzC11.o:catdog.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccRbEcmx.o: in function `main':
grader.cpp:(.text.startup+0x1d4): undefined reference to `initialize(int, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status