Submission #1307775

#TimeUsernameProblemLanguageResultExecution timeMemory
1307775orgiloogiiTropical Garden (IOI11_garden)C++20
0 / 100
1 ms332 KiB
#include "garden.h"
#include "gardenlib.h"
#include <bits/stdc++.h>
using namespace std;
vector <vector <int>> adj;
int n, m, p, q;
int ans = 0;

void solve(int cnt, int p, int u) {
    if (cnt == q && u != p) {
        return;
    }
    else if (cnt == q && u == p) {
        ans++;
        return;
    }
    if (adj[u].size() == 1) {
        solve(cnt + 1, u, adj[u][0]);
    }
    else {
        solve(cnt + 1, u, adj[u][1]);
    }
    return;
}

void count_routes(int N, int M, int P, int r[][2], int Q, int g[]) {
    n = N;
    adj.resize(n);
    m = M;
    p = P;
    for (int i = 0;i < m;i++) {
        int u = r[i][0];
        int v = r[i][1];
        if (adj[u].size() < 2) adj[u].push_back(v);
        if (adj[v].size() < 2) adj[v].push_back(u);
    }
    for(int i = 0; i < Q; i++) {
        q = g[i];
        int ans = 0;
        for (int i = 0;i < n;i++) {
            solve(0, -1, i);
        }
        answer(ans);
    }
}
/*int main() {
    int r[6][2];
    r[0][0] = 1;
    r[0][1] = 2;
    r[1][0] = 0;
    r[1][1] = 1;
    r[2][0] = 0;
    r[2][1] = 3;
    r[3][0] = 3;
    r[3][1] = 4;
    r[4][0] = 4;
    r[4][1] = 5;
    r[5][0] = 1;
    r[5][1] = 5;
    int q[1];
    q[0] = 3;
    cout << count_routes(6, 6, 0, r, 1, q);
}
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...