반응형
https://www.acmicpc.net/problem/10451
10451번: 순열 사이클
1부터 N까지 정수 N개로 이루어진 순열을 나타내는 방법은 여러 가지가 있다. 예를 들어, 8개의 수로 이루어진 순열 (3, 2, 7, 8, 1, 4, 5, 6)을 배열을 이용해 표현하면 \(\begin{pmatrix} 1 & 2 &3&4&5&6&7&8 \\ 3
www.acmicpc.net
주어진 순열로 그래프를 만들어서, 분리된 그래프의 개수를 구해주었습니다.
#include <iostream>
#include <vector>
using namespace std;
int t, n, a, v = 1, visit[1001] = { 0 };
vector<vector<int>> graph;
void dfs(int node) {
visit[node] = v;
for (int nxt : graph[node]) {
if (visit[nxt] != v)
dfs(nxt);
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> t;
while (t--) {
cin >> n;
graph.clear();
graph.resize(n + 1);
for (int i = 1; i <= n; i++) {
cin >> a;
graph[i].push_back(a);
}
int cnt = 0;
for (int i = 1; i <= n; i++) {
if (visit[i] != v) {
dfs(i);
cnt++;
}
}
cout << cnt << "\n";
v++;
}
}
반응형
'Algorithm' 카테고리의 다른 글
백준 3184 : 양 (0) | 2021.11.20 |
---|---|
백준 1743 : 음식물 피하기 (0) | 2021.11.20 |
백준 1037 : 약수 (0) | 2021.11.19 |
백준 1934 : 최소공배수 (0) | 2021.11.19 |
백준 1254 : 팰린드롬 만들기 (0) | 2021.11.19 |