思路:最初的想法是用两个数组存储 xi 和 yi,再嵌套 for 循环,实操后发现超时。
进一步:问题可以简化为是否存在 j < i 满足 xi = yi,则考虑使用不许添加重复数值的容器 set,每进行一次输入,则先判断 y 是否在 set 中出现过,再将 x 插入 set 中。
注意:由于 1 <= xi <= n,0 <= yi <= n,则当 y = 0 时认为 y 已被初始化。
#include<iostream>
#include<set>
using namespace std;
int main() {
int n, k;
cin>>n>>k;
int sum = 0;
set<int> s;
while(k--) {
int x, y;
cin>>x>>y;
if(s.count(y) == 0 && y != 0) sum++;
s.insert(x);
}
cout<<sum<<endl;
}