Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- c3 초
- selinux port 등록
- CentOS7
- gcc 업데이트
- c3 축 가리기
- regex_search
- influxdb 설치
- snmp test
- 1697
- InfluxDB
- 정규식 활용
- linux시간으로 변경
- c3 second
- grafana dashboard
- python popen
- python subprocess
- c++ 정규식
- c3 step graph
- subporcess path
- gcc regex
- 정규식 컴파일
- snmp
- centos pyhon 설치
- telegraf
- 정규식 문자열 출력
- c3 축 없애기
- python os
- 백준
- g++ 업데이트
- semanage
Archives
- Today
- Total
리셋 되지 말자
[백준 9466] 텀 프로젝트 본문
#include<iostream>
#include<stack>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int cas;
cin >> cas;
while (cas--) {
stack<pair<int, int>>s;
int account = 0;
int num = 0;
int len;
cin >> len;
int *arr = new int[len + 1]();
int *visit = new int[len + 1]();
for (int i = 1; i < len + 1; i++) {
cin >> arr[i];
}
for (int i = 1; i < len + 1; i++) {
num = 0;
if (visit[i] == 0) {
visit[i] = 1;
s.push(make_pair(i, arr[i]));
int next = arr[i];
while (visit[next] == 0) {
s.push(make_pair(next, arr[next]));
visit[next] = 1;
next = arr[next];
}
if (!s.empty()) {
while (1) {
if (s.empty()) {
num = 0;
break;
}
if (s.top().first == next) {
num++;
break;
}
num++;
s.pop();
}
while (!s.empty())
s.pop();
}
account += num;
}
}
cout << len - account << '\n';
delete[] arr;
delete[] visit;
}
return 0;
}
DFS 문제인건 알았는데, 스택 안쓰고 1차원 배열 두개로만 해결하려다가 7시간동안 안풀려서 포기....
Stack으로 푸니까 바로 성공... ㅠ_ㅠ
'알고리즘' 카테고리의 다른 글
[백준] N과M(1) (0) | 2020.05.17 |
---|---|
[백준]N와 M(1) (0) | 2020.04.25 |
재귀로 짠 수열(?) (0) | 2020.04.25 |
[백준 1697] 숨바꼭질 (0) | 2020.03.11 |
[백준 7576]토마토 (0) | 2020.03.11 |
Comments