두 보조 계정이 함께 팔로우한 게시물로 유사도 점수를 계산하고, 인간으로 알려진 계정과 유사한 계정 수를 센다.
보통6구현해시맵완전 탐색면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB가짜 뉴스는 봇 계정이 퍼뜨리는 경우가 많다. 봇은 사람으로 보이려고 다른 계정을 팔로우하고 그 계정의 글을 리포스트한다. 봇과 사람은 리포스트 패턴이 다르다. 이 차이로 어떤 계정이 사람인지 가려내자.
계정은 두 종류다. 글을 올리는 주 계정이 p개, 주 계정의 글을 리포스트하는 부 계정이 s개 있다. 각 부 계정마다 어떤 주 계정을 팔로우하는지, 사람으로 확인된 계정인지, 리포스트한 글이 무엇인지 주어진다. 부 계정은 자기가 팔로우하는 주 계정의 글을 모두 본다고 가정한다. 그래서 본 글을 리포스트하지 않은 것도 의도적인 선택이다.
두 부 계정의 유사도 점수는 정수 세 개 w0, w1, w2 (w1<0<w0,w2)로 정한다. 두 계정이 모두 팔로우하는 주 계정의 글만 점수 계산에 쓴다. 그런 글 하나마다, 그 글을 리포스트한 계정이 두 계정 중 j개면 wj를 더한다. 둘 다 리포스트했거나 둘 다 리포스트하지 않았으면 양수 점수를 받고, 한쪽만 리포스트했으면 음수 점수 w1을 받는다. 두 계정이 함께 팔로우하는 주 계정이 하나도 없으면 점수는 0이다.
점수의 합이 기준값 t 이상인 두 계정을 비슷하다고 한다. 사람으로 확인된 계정과 비슷한 부 계정은 사람으로 판정한다. 사람으로 판정된 계정과 비슷하다는 이유로 사람이 되지는 않는다. 판정은 이렇게 한 단계만 적용한다.
데이터 집합마다 사람으로 확인되었거나 사람으로 판정된 부 계정의 수를 구하라.
첫 줄에 데이터 집합의 개수 K가 주어진다. 이어서 데이터 집합 K개가 다음 형식으로 주어진다.
데이터 집합의 첫 줄에는 정수 여섯 개 p, s, w0, w1, w2, t가 주어진다. 1≤p≤100은 주 계정의 수, 1≤s≤100은 부 계정의 수, −100≤w1<0<w0,w2≤100은 유사도 점수, 0≤t<100000은 기준값이다.
다음 줄에는 정수 p개 mi (0≤mi≤1000)가 주어진다. mi는 주 계정 i가 올린 글의 수다. 글에는 1번부터 번호를 붙이는데, 앞의 m1개는 주 계정 1의 글, 그다음 m2개는 주 계정 2의 글, 같은 식으로 이어진다.
다음 s개 줄에는 부 계정 j의 정보가 한 줄에 하나씩 주어진다. 줄은 정수 hj로 시작한다. hj가 1이면 사람으로 확인된 계정이고, 0이면 사람인지 봇인지 아직 모르는 계정이다. 그다음 정수 fj (0≤fj≤p)는 j가 팔로우하는 주 계정의 수이고, 이어서 서로 다른 정수 fj개가 1 이상 p 이하로 주어진다. 이 값은 j가 팔로우하는 주 계정의 번호다. 그다음 정수 rj (0≤rj≤∑imi)는 j가 리포스트한 글의 수이고, 이어서 서로 다른 정수 rj개가 1 이상 ∑imi 이하로 주어진다. 이 값은 j가 리포스트한 글의 번호다. 부 계정이 팔로우하지 않는 주 계정의 글을 리포스트하는 입력은 주어지지 않는다.
데이터 집합마다 먼저 Data Set x:를 한 줄에 출력한다. x는 데이터 집합의 번호이고 1부터 센다. 다음 줄에 사람으로 확인되었거나 사람으로 판정된 부 계정의 수를 출력한다. 데이터 집합마다 그 뒤에 빈 줄을 하나 출력한다.