| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 737744 | rominanafu | Tropical Garden (IOI11_garden) | C++11 | 0 ms | 0 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define pii pair<int,int>
using namespace std;
int n, m, fin;
int a, b;
pii sig[1005];
int queries, caso, resp;
int dist[1005][3];
int cant_rutas(int ant, int act, int sum) {
    if (act == fin && sum == caso)
        return 1;
    if (sum > caso)
        return 0;
    int r=0;
    if (sig[act].first != ant || sig[act].second == -1)
        r = cant_rutas(act, sig[act].first, sum+1);
    else
        r = cant_rutas(act, sig[act].second, sum+1);
    return r;
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    memset(dist, -1, sizeof(dist));
    memset(sig, -1, sizeof(sig));
    cin >> n >> m; /// trail 0 > trail 1 > trail 2... (in beauty)
    cin >> fin;
    for(int i=0; i<m; i++) {
        cin >> a >> b;
        if (sig[a].first == -1) {
            sig[a].first = b;
        } else if (sig[a].second == -1) {
            sig[a].second = b;
        }
        if (sig[b].first == -1) {
            sig[b].first = a;
        } else if (sig[b].second == -1) {
            sig[b].second = a;
        }
    }
    cin >> queries;
    while (queries--) {
        cin >> caso;
        resp = 0;
        for(int i=0; i<n; i++) {
            resp += cant_rutas(-1, i, 0);
        }
        cout << resp << ' ';
    }
    return 0;
}
