제출 #592398

#제출 시각아이디문제언어결과실행 시간메모리
592398promaTropical Garden (IOI11_garden)C++17
49 / 100
7 ms1248 KiB
#include "garden.h"
#include "gardenlib.h"
#include <bits/stdc++.h>

using namespace std;

const int N = 1005;

vector <pair <int, int>> g[N];
vector <int> cmpn;
int used[N], cnt;

void dfs(int v) {
    cmpn.push_back(v);
    used[v] = 1;
    for (auto i: g[v]) {
        if (!used[i.first]) {
            dfs(i.first);
        }
    }
}

void go(int v, int last, int step, int k, int p) {
    if (step == k) {
        if (v == p) cnt ++;
        return;
    }
    if (g[v].size() == 1 or last != g[v][0].second) {
        go(g[v][0].first, g[v][0].second, step + 1, k, p);
    }
    else {
        go(g[v][1].first, g[v][1].second, step + 1, k, p);
    }
}

void count_routes(int N, int M, int P, int R[][2], int Q, int G[]) {
    for (int i = 0; i < M; i ++) {
        g[R[i][0]].push_back({R[i][1], i});
        g[R[i][1]].push_back({R[i][0], i});
    }
    dfs(P);
    for (auto i: cmpn) {
        go(i, -1, 0, G[0], P);
    }
    answer(cnt);
}


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