Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 쿠버네티스
- Spring Boot
- 백트래킹
- 클라우드 컴퓨팅
- 스프링부트
- DFS
- 코드업
- 인천여행
- 클라우드
- Kafka
- 월미도
- 스프링
- Elasticsearch
- Spring Data JPA
- 알고리즘
- 오일러프로젝트
- gcp
- JPA
- Apache Kafka
- 스프링 부트
- 카프카
- springboot
- Spring
- 자료구조
- aws
- 프로그래밍문제
- 백준
- Docker
- 로드밸런서
- VPC
Archives
- Today
- Total
GW LABS
[Backjoon] 순열 사이클 본문
쉬운 그래프 문제 중 하나였다. 기본적인 개념을 복습하기 좋게 문제가 설계되어 있었다. 방향 그래프에 대한 개념과 그래프 순회방법을 복습했다. 해당 문제는 인접리스트를 쓸 필요가 없는데 인접 노드가 하나로 고정되어 있기 때문이다. 아래는 소스코드이다.
#include <iostream>
#include <string.h>
#include <queue>
using namespace std;
int graph[1001];
bool visited[1001];
void bfs(int start) {
queue<int> q;
q.push(graph[start]);
visited[start] = true;
while (!q.empty()) {
int now = q.front();
q.pop();
if (!visited[now]) {
visited[now] = true;
q.push(graph[now]);
}
}
}
int main() {
int caseCount;
cin >> caseCount;
while (caseCount--) {
int size;
cin >> size;
for (int i = 1; i <= size; ++i) {
cin >> graph[i];
}
int cycleCount = 0;
for (int node = 1; node <= size; ++node) {
if (!visited[node]) {
bfs(node);
cycleCount++;
}
}
cout << cycleCount << endl;
memset(graph, 0, 1001 * sizeof(int));
memset(visited, false, 1001 * sizeof(bool));
}
return 0;
}
'Algorithm & DataStructure > Problems' 카테고리의 다른 글
[Backjoon] 우유 축제 (0) | 2021.11.30 |
---|---|
[Backjoon] 11586번 지영 공주님의 마법 거울 (0) | 2021.10.21 |
[Backjoon] 희주의 수학시험 (0) | 2021.06.24 |
[Backjoon] 동혁 피자 (0) | 2021.06.06 |
[Backjoon] 케빈 베이컨의 6단계 법칙 (0) | 2021.05.15 |
Comments