Advertisement
sandeshMC

Swapping Bridges

Sep 12th, 2015
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.28 KB | None | 0 0
  1.  
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.FileReader;
  5. import java.io.InputStreamReader;
  6. import java.util.Arrays;
  7. import java.util.LinkedList;
  8.  
  9. public class SwappingBridges {
  10.    
  11.     static int visited[];
  12.    
  13.     public static int notVisited() {
  14.         for (int i = 0; i < visited.length; i++) {
  15.             if (visited[i] == 0) {
  16.                 return i;
  17.             }
  18.         }
  19.         return -1;
  20.     }
  21.    
  22.     public static void main(String args[]) throws Exception {
  23.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  24.  
  25.         //BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\sandesh\\Documents\\NetBeansProjects\\codeshef\\src\\codechef\\new.txt"));
  26.         int n = Integer.parseInt(br.readLine());
  27.        
  28.         while (n-- > 0) {
  29.             int arr[] = new int[Integer.parseInt(br.readLine())];
  30.             visited = new int[arr.length];
  31.             String s[] = br.readLine().split(" ");
  32.             int count = 0;
  33.             for (int i = 0; i < s.length; i++) {
  34.                 arr[i] = Integer.parseInt(s[i]) - 1;
  35.             }
  36.            // System.out.println(Arrays.toString(arr));
  37.             LinkedList ll = new LinkedList();
  38.             int j = 0;
  39.             ll.add(arr[j]);
  40.             visited[j] = 1;
  41.             j = (int) ll.getLast();
  42.            // System.out.println((int) ll.getLast());
  43.             while (j < arr.length) {
  44.                 //System.out.println(Arrays.toString(visited));
  45.                // System.out.println((int) ll.getFirst() + " arr[" + j + "]: " + arr[j]);
  46.                
  47.                 if (((int) ll.getFirst()) == arr[j]) {
  48.                     count++;
  49.                     j = notVisited();
  50.                     if (j == -1) {
  51.                         break;
  52.                     } else {
  53.                         ll.clear();
  54.                         ll.add(arr[j]);
  55.                         j = (int) ll.getLast();
  56.                         visited[j]=1;
  57.                         continue;
  58.                     }
  59.                 }
  60.                 ll.add(arr[j]);
  61.                 visited[j] = 1;
  62.                 j = (int) ll.getLast();
  63.                 visited[j] = 1;
  64.             }
  65.             ll.clear();
  66.             System.out.println(count-1);
  67.         }
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement