CF291A Spyke Talks

题目描述

Polycarpus 是一家大型公司的主管。公司里有 $n$ 名秘书,他们在白天都会通过著名的 Spyke VoIP 系统进行通信。我们知道,当两个人通过 Spyke 通话时,Spyke 网络会为这次通话分配一个唯一的 ID,也就是一个正整数的会话号。 有一天,Polycarpus 想知道哪些秘书正在使用 Spyke 通话,哪些没有。对于每位秘书,他写下了该秘书通话的会话号,如果该秘书当时没有通过 Spyke 通话,则记为 $0$。 请你帮助 Polycarpus 分析这些数据,计算有多少对秘书正在通话。如果数据记录有误(即描述的情形无法发生),请输出 $-1$ 表示出错。 注意,秘书不仅可以和彼此用 Spyke 联系,还可以和其他地方的人通话。此外,不允许使用 Spyke 进行会议通话——也就是说,一次通话只能连接两个人。

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 10^{3}$),表示 Polycarpus 公司里的秘书数量。 第二行包含 $n$ 个用空格分隔的整数 $id_1, id_2, \ldots, id_n$($0 \leq id_{i} \leq 10^{9}$)。其中 $id_i$ 表示第 $i$ 位秘书当前通话的会话号,如果该秘书没有通话,则为 $0$。 秘书的编号从 $1$ 到 $n$。

输出格式

输出一个整数,表示正在通话的秘书对数。如果 Polycarpus 的记录有误,且数据无法符合题目描述,输出 $-1$。

说明/提示

在第一个样例中,有两对秘书通过 Spyke 通话:第 2 位与第 4 位,第 3 位与第 5 位。 在第二个样例中,该情形是不可能的,因为不允许会议通话。 由 ChatGPT 5 翻译