Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.InputStreamReader;
- import java.util.Arrays;
- import java.util.LinkedList;
- public class SwappingBridges {
- static int visited[];
- public static int notVisited() {
- for (int i = 0; i < visited.length; i++) {
- if (visited[i] == 0) {
- return i;
- }
- }
- return -1;
- }
- public static void main(String args[]) throws Exception {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- //BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\sandesh\\Documents\\NetBeansProjects\\codeshef\\src\\codechef\\new.txt"));
- int n = Integer.parseInt(br.readLine());
- while (n-- > 0) {
- int arr[] = new int[Integer.parseInt(br.readLine())];
- visited = new int[arr.length];
- String s[] = br.readLine().split(" ");
- int count = 0;
- for (int i = 0; i < s.length; i++) {
- arr[i] = Integer.parseInt(s[i]) - 1;
- }
- // System.out.println(Arrays.toString(arr));
- LinkedList ll = new LinkedList();
- int j = 0;
- ll.add(arr[j]);
- visited[j] = 1;
- j = (int) ll.getLast();
- // System.out.println((int) ll.getLast());
- while (j < arr.length) {
- //System.out.println(Arrays.toString(visited));
- // System.out.println((int) ll.getFirst() + " arr[" + j + "]: " + arr[j]);
- if (((int) ll.getFirst()) == arr[j]) {
- count++;
- j = notVisited();
- if (j == -1) {
- break;
- } else {
- ll.clear();
- ll.add(arr[j]);
- j = (int) ll.getLast();
- visited[j]=1;
- continue;
- }
- }
- ll.add(arr[j]);
- visited[j] = 1;
- j = (int) ll.getLast();
- visited[j] = 1;
- }
- ll.clear();
- System.out.println(count-1);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement