Notice
Recent Posts
Recent Comments
ยซ   2024/09   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐ŸŒฒ์ž๋ผ๋‚˜๋Š”์ฒญ๋…„

Q9496 ํ…€ํ”„๋กœ์ ํŠธ(์‹œ๊ฐ„์ดˆ๊ณผ๋กœ ์‹คํŒจ) ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด

Q9496 ํ…€ํ”„๋กœ์ ํŠธ(์‹œ๊ฐ„์ดˆ๊ณผ๋กœ ์‹คํŒจ)

JihyunLee 2019. 5. 7. 17:40
๋ฐ˜์‘ํ˜•
package graph;
import java.util.*;
public class Q9496 {
	static int num=0;
	static int[] arr;
	static int[] visit;
	static int sum=0;
	static int index=0;
	static ArrayList<Integer> al;
	
	public static void main(String[] args) {
		
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		int test = Integer.parseInt(scan.nextLine());
		while(test>0) {
			test--;
			sum=0;
			num = Integer.parseInt(scan.nextLine());
			arr = new int[num+1];
			visit = new int[num+1];
			String s = scan.nextLine();
			StringTokenizer st = new StringTokenizer(s," ");
			for(int i=1; i<=num; i++) {
				arr[i] = Integer.parseInt(st.nextToken());
			}
			for(int i=1;i<=num; i++) {
				al = new ArrayList<Integer>();
				if(visit[i]==0)	find(i);
			}
			System.out.println(num-sum);
			
		}
		
	}
	
	public static void find(int i) {
		visit[i] = 1;
		al.add(i);
		if(arr[i] == i) {
			sum += 1;
			return;
		}
		index =  al.indexOf(arr[i]);
		if(index!=-1){
			int n= al.size()-index;
			sum = sum + n;
			return;
		}
		else {
			int ni = arr[i];
			if(visit[ni]==0) find(ni);
		}
}

}
๋ฐ˜์‘ํ˜•