def ascan; gets.split.map(&:to_i);end N,M = ascan items = {} M.times do g,r = ascan hh = ascan items[g] = hh end ans = {} det = {} dfs = lambda do |id| next ans[id] if ans[id] item = items[id] next ans[id] = 1 if !item next false if det[id] det[id] = true ret = 1 item.each do |e| r = dfs.call(e) if r == false ret = false break end end det[id] = false next ans[id] = ret end res = 0 (1..N).each do |id| res += dfs.call(id) ? 1 : 0 end p res