思路:解题思路不难,就是刚开始设置了两个数组,运行会超时,只有六十分,因此考虑砍掉一个数组,减少运行时间,初始arr的所有值为0,arr[x]=x,如果y在之前出现过,那么arr[y]就不会等于0,此时sum++
代码如下:
#include<iostream>
using namespace std;
int n,k,x,y;
int arr[100001];//会超时,少开数组
int main(){
cin>>n>>k;
cin>>x>>y;
arr[x]=x;//先输入第一组数据,arr[x]此时的值为第一个x
int sum=1;
for(int i=1;i<k;i++){
cin>>x>>y;
if(y!=0&&arr[y]==0) {
sum++;
}
arr[x]=x;
}
cout<<sum;
}