Created
November 6, 2019 17:44
-
-
Save sofhiasouza/b5d43273eb7d62d75fc44ca8cf156739 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Desenhando Labirintos - URI 1076 | |
//Sofhia de Souza Gonçalves | |
#include <bits/stdc++.h> | |
#define pb push_back | |
using namespace std; | |
const int maxn = 55; | |
int t, n, v, a, vist[maxn], tempo; | |
vector < int > grafo[maxn]; | |
int dfs(int x) | |
{ | |
vist[x] = tempo; //marco x como visitado | |
int resp = 1; //comeco com 1, pois me movimento 1 para voltar pro pai no final | |
for(int v : grafo[x]) | |
{ | |
if(vist[v] == tempo) continue; //se ja visitei o vertice v nesse caso de teste, ignoro ele | |
resp += dfs(v) + 1; //do contrario, chamo a dfs dele e somo na resposta da subarvore de x a resposta da subarvore de v + 1 | |
} | |
return resp; //retorno a resposta de toda a subarvore de x | |
} | |
int main() | |
{ | |
cin >> t; //leio a quantidade de casos de teste | |
tempo = 1; //variavel que marca o caso de teste que estou | |
while(t--) | |
{ | |
cin >> n >> v >> a; | |
for(int i = 1 ; i <= a ; i++) | |
{ | |
int x, y; | |
cin >> x >> y; | |
grafo[x].pb(y); //coloco y na lista de adjacencias de x e vice-versa | |
grafo[y].pb(x); | |
} | |
cout << dfs(n) - 1 << "\n"; //imprimo o resultado chamando a dfs, -1 pois estava contado o movimento de chegar no primeiro | |
tempo++; //incremento a variavel que guarda o caso de teste, pois esse acabou | |
for(int i = 0 ; i < v ; i++) grafo[i].clear(); //limpo o grafo | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment