Submission #1304960

#TimeUsernameProblemLanguageResultExecution timeMemory
1304960nicolo_010Tropical Garden (IOI11_garden)C++20
49 / 100
5092 ms1600 KiB
#include <bits/stdc++.h>
#include "garden.h"
#include "gardenlib.h"
using namespace std;
using ll = long long;
using pii = pair<int, int>;

vector<vector<int>> adj;
int k;
int e;
int cnt=0;


void dfs(int n, int p, int d) {
    //cout << n << " " << p << " " << d << " " << e << endl;
    if (d==k) {
        cnt += (n==e);
        return;
    }
    for (auto x : adj[n]) {
        if (x==p && adj[n].size()>1) continue;
        dfs(x, n, d+1);
        break;
    }
}

void count_routes(int N, int M, int P, int R[][2], int Q, int G[]) {
    int n = N, m = M;
    e = P;
    adj.assign(n, {});
    for (int i=0; i<m; i++) {
        int a = R[i][0];
        int b = R[i][1];
        if (adj[a].size()<2) adj[a].push_back(b);
        if (adj[b].size()<2) adj[b].push_back(a);
    }
    for (int i=0; i<Q; i++) {
        cnt=0;
        for (int j=0; j<n; j++) {
            k=G[i];
            //cout << "PATH OF " << j << ": " << endl;
            dfs(adj[j][0], j, 1);
        }
        answer(cnt);
    }
}


#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...