Submission #1312203

#TimeUsernameProblemLanguageResultExecution timeMemory
1312203tsetsenbilegTropical Garden (IOI11_garden)C++20
0 / 100
1 ms332 KiB
#include "garden.h"
#include "gardenlib.h"
#include <bits/stdc++.h>
using ll = long long;
using ld = long double;
#define pr pair<int, int>
#define pb push_back
using namespace std;
const ll INF = 1e18+1, MOD = 1e9+7;
vector<vector<int>> edge;

int dfs(int node, int prev, int cnt, int k, int p) {
  if (k == cnt) {
    if (node == p) return 1;
    else return 0;
  }
  if (edge[node][0] == prev && edge[node].size() > 1) {
    return dfs(edge[node][1], node, cnt+1, k, p);
  } 
  else {
    return dfs(edge[node][0], node, cnt+1, k, p);
  }
}

void count_routes(int N, int M, int P, int R[][2], int Q, int G[]) {
  vector<int> ans(Q, 0);
  edge.resize(N);
  for (int i = 0; i < M; i++) {
    edge[R[i][0]].pb(R[i][1]);
    edge[R[i][1]].pb(R[i][0]);
  }
  for (int i = 0; i < N; i++) {
    if (P == i) continue;
    for (int j = 0; j < Q; j++) {
      ans[j] += dfs(i, -1, 0, G[j], P);
    }
  }
  for(int i=0; i<Q; i++)
    cout << ans[i];
}


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