AOJ2399 Save Your Privacy!
問題リンク Save Your Privacy!
- 解法
ある人物iが犯人になりえるかを調べるためには、この人物が、情報漏洩したK人について知っていなければなりません。全ての人物についてこのチェックを行い、犯人となりえる人物がただ1人ならばその人物が犯人です。それ以外の場合は-1となります。
- ソース
import java.util.ArrayList; import java.util.List; import java.util.Scanner; //Save Your Privacy! public class AOJ2399 { void run(){ Scanner sc = new Scanner(System.in); for(;;){ int n = sc.nextInt(); if(n==0)break; boolean[][] e = new boolean[n][n+1]; for(int i=0;i<n;i++){ int m = sc.nextInt(); while(m--!=0)e[i][sc.nextInt()]=true; } boolean[] f = new boolean[n+1]; int K = sc.nextInt(); while(K--!=0)f[sc.nextInt()]=true; List<Integer> l = new ArrayList<Integer>(); for(int i=0;i<n;i++){ boolean ok = true; for(int j=1;j<=n;j++)if(f[j]&&!e[i][j])ok=false; if(ok)l.add(i+1); } System.out.println(l.isEmpty()||l.size()>1?-1:l.get(0)); } } public static void main(String[] args) { new AOJ2399().run(); } }