Submission #1275389

#TimeUsernameProblemLanguageResultExecution timeMemory
1275389tm.khoa.tmCats or Dogs (JOI18_catdog)C++20
Compilation error
0 ms0 KiB
//I love ManchesterUnited
#include<bits/stdc++.h>
using namespace std;

#define love ManchesterUnited
#define int long long
#define pb push_back
#define FOR(i,a,b) for (int i=(a); i<=(b); i++)
#define FORD(i,b,a) for (int i=(b); i>=(a); i--)
#define REP(i, n) for(int i=0; i<(n); ++i)
#define RED(i, n) for(int i=(n)-1; i>=0; --i)
#define endl '\n'

const int N = 1005;
int n;
vector<int> adj[N];
int pet[N];

int dangerLevel() {
    vector<int> cats, dogs;
    FOR(i,1,n){
        if (pet[i]==1) cats.pb(i);
        if (pet[i]==2) dogs.pb(i);
    }
    if (cats.empty() || dogs.empty()) return 0;

    int ans = 1e9;
    for (int c : cats){
        queue<int> q;
        vector<int> dist(n+1,-1);
        q.push(c); dist[c]=0;
        while(!q.empty()){
            int u = q.front(); q.pop();
            if (pet[u]==2){
                ans = min(ans, dist[u]);
                break;
            }
            for (int v: adj[u]){
                if (dist[v]==-1){
                    dist[v]=dist[u]+1;
                    q.push(v);
                }
            }
        }
    }
    return ans;
}

void initialize(int N, vector<int> A, vector<int> B){
    n = N;
    FOR(i,1,n){ adj[i].clear(); pet[i]=0; }
    for (int i = 0; i < N-1; i++){
        int u = A[i], v = B[i];
        adj[u].pb(v);
        adj[v].pb(u);
    }
}

int cat(int v){
    pet[v] = 1;
    return dangerLevel();
}

int dog(int v){
    pet[v] = 2;
    return dangerLevel();
}

int neighbor(int v){
    pet[v] = 0;
    return dangerLevel();
}

int32_t main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int N; cin >> N;
    vector<int> A(N-1), B(N-1);
    REP(i,N-1) cin >> A[i] >> B[i];
    initialize(N,A,B);

    int Q; cin >> Q;
    while(Q--){
        int t,v; cin >> t >> v;
        if (t==1) cout << cat(v) << endl;
        else if (t==2) cout << dog(v) << endl;
        else cout << neighbor(v) << endl;
    }
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccy8KISR.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccQvWYnh.o:catdog.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccy8KISR.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> >)'
/usr/bin/ld: grader.cpp:(.text.startup+0x211): undefined reference to `neighbor(int)'
/usr/bin/ld: grader.cpp:(.text.startup+0x250): undefined reference to `dog(int)'
/usr/bin/ld: grader.cpp:(.text.startup+0x261): undefined reference to `cat(int)'
collect2: error: ld returned 1 exit status