解题思路
1.右值合法的情况下或者右值为常量,左值均会打上合法标记
2.右值不合法的情况下,ans ++
3.不管右值是否合法,左值在进入下一轮循环之前都会置为合法
输出ans即为答案
C++ 代码
#include <iostream>
#include <unordered_map>
using namespace std;
const int N = 1000000 + 10;
unordered_map<double,int> Q;
int main()
{
int n,k,ans = 0;
cin >> n >> k;
while(k -- )
{
double l,r;
cin >> l >> r;
if(r == 0 || Q[r] != 0)Q[l] ++ ;
else if(Q[r] == 0)ans ++ ;
Q[l] ++ ;
}
cout << ans << endl;
return 0;
}