这道题理解起来不难,只需一个数组a[n+1],其中a[0]代表常数,初始化为1。剩余a[1]到a[n]代表变量,初始化为0。遍历K条赋值语句,判断右值是否为0即可。
完整代码:
#include<bits/stdc++.h>
using namespace std;
//一段代码包含K条赋值语句,最多有n个变量,记作a1...an, 代码中的常量记作a0
int a[100005]={0};
int main()
{
a[0]=1;
int n,k;//变量数量,赋值语句条数
cin>>n>>k;
int count=0;
for(int i=1;i<=k;i++)
{
int x,y;
cin>>x>>y;
if(a[y]==0) count++;
a[x]=1;
}
cout<<count;
return 0;
}