bool matching(int x, int p) { visit[x] = true; for(int i = 0; i < (int)graf[x].size(); i++) { int y = graf[x][i]; if(y != p && (mate[y] == -1 || dfs(mate[y], y) == true)) { mate[x] = y; mate[y] = x; return true; } } return false; }