#include #include #include "avaliador.h" struct node { int vl; node* next; } typedef node; int correct = 0; int n, d, target, guesses = 0; int es[MAXN], et[MAXN], pre[MAXN + 1]; node* nnei[MAXN]; void end() { if (correct) printf("Correto! Foram feitas %d analises\n", guesses); else printf("Incorreto...\n"); exit(0); } void fill(int cur, int prev) { node* c = nnei[cur]; pre[cur] = prev; while (c != NULL) { if (c->vl != prev) fill(c->vl, cur); c = c->next; } } int analisar(int V) { correct = 0; guesses++; if (guesses > d || V < 1 || V > n) end(); if (V - 1 == target) correct = 1; return pre[V - 1] + 1; } int main() { int i; scanf("%d %d", &n, &d); for (i = 0; i < n - 1; i++) scanf("%d %d", &es[i], &et[i]); scanf("%d", &target); target--; for (i = 0; i < n; i++) nnei[i] = NULL; for (i = 0; i < n - 1; i++) { node* n1 = new node(); n1->vl = es[i] - 1; n1->next = nnei[et[i] - 1]; nnei[et[i] - 1] = n1; node* n2 = new node(); n2->vl = et[i] - 1; n2->next = nnei[es[i] - 1]; nnei[es[i] - 1] = n2; } fill(target, -2); resolver(n, d, es, et); end(); return 0; }