← Home
For problem statement at 0-999/0-99/20-29/25/problemD.txt this is a correct solution, but verifier at 0-999/0-99/20-29/25/verifierD.go ends with All tests passed can you fix the verifier? package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)

	if !scanner.Scan() {
		return
	}
	n, _ := strconv.Atoi(scanner.Text())

	parent := make([]int, n+1)
	for i := 1; i <= n; i++ {
		parent[i] = i
	}

	var find func(i int) int
	find = func(i int) int {
		if parent[i] == i {
			return i
		}
		parent[i] = find(parent[i])
		return parent[i]
	}

	union := func(i, j int) bool {
		rootI := find(i)
		rootJ := find(j)
		if rootI != rootJ {
			parent[rootI] = rootJ
			return true
		}
		return false
	}

	type Edge struct {
		u, v int
	}

	var redundantEdges []Edge

	for i := 0; i < n-1; i++ {
		scanner.Scan()
		u, _ := strconv.Atoi(scanner.Text())
		scanner.Scan()
		v, _ := strconv.Atoi(scanner.Text())
		if !union(u, v) {
			redundantEdges = append(redundantEdges, Edge{u, v})
		}
	}

	var roots []int
	for i := 1; i <= n; i++ {
		if parent[i] == i {
			roots = append(roots, i)
		}
	}

	fmt.Println(len(redundantEdges))
	for i := 0; i < len(redundantEdges); i++ {
		fmt.Printf("%d %d %d %d\n", redundantEdges[i].u, redundantEdges[i].v, roots[0], roots[i+1])
	}
}