如果某次 exchange 函数的调用违反了 的限制,输出错误信息:Invalid call of exchange(x, y)!。
如果 exchange 函数调用次数超过 ,输出错误信息:Too many exchanges!。
如果某次 query 函数的调用违反了 的限制,输出错误信息:Invalid call of query(u)!。
如果 query 函数调用次数超过 ,输出错误信息:Too many queries!。
在输出任何以上错误信息后,交互库立即终止。
交互库会在你每次调用 函数时输出提示信息:
如果 par 或 val 的长度不是 ,则输出 Invalid output!。
如果 par 数组与树的形态不同,那么它会给出第一个错误的位置,并返回如下格式的错误信息:The answer to p[i] is wrong! The right answer is j, but you output k.。注意,这里 , 为 号点的真正的父亲编号,par[i - 2] 为你给出的位置编号。
如果 par 数组正确,但 val 数组与初始时树上边权值不同,那么它会给出你第一个错误的位置,并返回如下格式的错误信息:The answer to v[i] is wrong! The right answer is j, but you output k.。类似地,这里 , 为 号点到它父亲的边的真正的初始权值,val[i - 2] 为你给出的权值。
如果你给出的 par 和 val 数组正确,那么交互库会输出你调用 exchange 函数和 query 函数的次数。输出格式为:Right output! cnt1 = A, cnt2= B.,其中 A 表示你调用 exchange 函数的次数,B 表示你调用 query 函数的次数。