호빵이의 알고리즘

[10451번] 순열 사이클 본문

알고리즘/BOJ

[10451번] 순열 사이클

남현경 2018. 7. 26. 23:29


#include 
#include 

using namespace std;

int N, T;
int map[1001];
bool visited[1001];
int x, y, cnt;
queue Q;

void init() {
	cin >> N;
	for (int i = 1; i <= N; i++) {
		cin >> map[i]; 
		visited[i] = false;
	}
}

void solve() {
	int graphNum = 0;
	for (int i = 1; i <= N; i++) {
		if (visited[i] == false) {
			int now = i;
			visited[now] = true;
			while (true) {
				int next = map[now];
				if (visited[next] == false) {
					visited[next] = true;
					now = next;
				}
				else {
					graphNum++; 
					break;
				}
			}
		}
	}
	cout << graphNum << endl;
}

int main() {
	cin >> T;
	while(T--){
		init();

		solve();
	}
	return 0;
}

'알고리즘 > BOJ' 카테고리의 다른 글

[11650번] 좌표정렬하기  (0) 2018.07.26
[11726번] 2n 타일링  (0) 2018.07.26
[2110번] 공유기 설치  (0) 2018.07.25
[11047번] 동전 0  (0) 2018.07.24
[4963번] 섬의 개수  (0) 2018.07.24