Topcoder SRM 480 "InternetSecurity"

問題:http://www.topcoder.com/stat?c=problem_statement&pm=11064 (要ログイン)

とりあえず貼っとく.
本番ではdangerousが更新されてから再度keywordの検査をしなかったアウト.

import java.util.*;

public class InternetSecurity {
	public String[] determineWebsite(String[] address, String[] keyword,
			String[] dangerous, int threshold) {
		int n = address.length;
		Set<String> dangerSet = new HashSet<String>(Arrays.asList(dangerous));
		List<String> resultList = new ArrayList<String>();
		for (boolean b=true;b;) {
			b = false;
			for (int i = 0; i < n; ++i) { // 50
				int dc = 0;
				if (!resultList.contains(address[i])) {
					for (String key : keyword[i].split(" ")) {
						if (dangerSet.contains(key)&&++dc >= threshold) {
							b = true;
							resultList.add(address[i]);
							dangerSet.addAll(Arrays.asList(keyword[i].split(" ")));
							break;
						}
					}
				}
			}
		}
		String[] result=new String[resultList.size()];
		for(int i=0,p=0;i<n;++i){
			if(resultList.contains(address[i])){
				result[p++]=address[i];
			}
		}
		return result;
	}

}