Advertisement
Guest User

Untitled

a guest
Feb 6th, 2016
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.56 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3. import java.util.HashSet;
  4. import java.util.Set;
  5. import java.util.StringTokenizer;
  6.  
  7. import acm.program.ConsoleProgram;
  8.  
  9. public class TopologicalSorting extends ConsoleProgram {
  10.  
  11.     public void run() {
  12.         HashMap<Integer, ArrayList<Integer>> map = new HashMap<Integer, ArrayList<Integer>>();
  13.        
  14.         String s = readLine("Enter n of subjects and n of limitations: ");
  15.         int subject = 0, limit = 0;
  16.         StringTokenizer tk = new StringTokenizer(s);
  17.         subject = Integer.valueOf(tk.nextToken());
  18.         limit = Integer.valueOf(tk.nextToken());
  19.         for (int i = 0; i < limit; i++) {
  20.             int pre = 0, sub = 0;
  21.             String lim = readLine();
  22.             StringTokenizer tok = new StringTokenizer(lim);
  23.             pre = Integer.valueOf(tok.nextToken());
  24.             sub = Integer.valueOf(tok.nextToken());
  25.             if (map.containsKey(sub)) {
  26.                 ArrayList<Integer> array = map.get(sub);
  27.                 array.add(pre);
  28.                 map.put(sub, array);
  29.             } else {
  30.                 ArrayList<Integer> array = new ArrayList<Integer>();
  31.                 array.add(pre);
  32.                 map.put(sub, array);
  33.             }
  34.         }
  35.        
  36.         Set<Integer> set = new HashSet<Integer>();
  37.         String sequence = readLine("Enter sequence: ");
  38.         StringTokenizer tok = new StringTokenizer(sequence);
  39.         set.add(Integer.valueOf(tok.nextToken()));
  40.         while (tok.hasMoreTokens()) {
  41.             int i = Integer.valueOf(tok.nextToken());
  42.             if (!map.containsKey(i)) continue;
  43.             for (int j = 0; j < map.get(i).size(); j++) {
  44.                 if (!set.contains(map.get(i).get(j))) {
  45.                     println("false");
  46.                     return;
  47.                 }
  48.             }
  49.             set.add(i);
  50.         }
  51.         println("true");
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement