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
- snmp test
- c3 축 가리기
- c3 second
- subporcess path
- 정규식 문자열 출력
- influxdb 설치
- python popen
- gcc 업데이트
- grafana dashboard
- regex_search
- CentOS7
- c3 초
- selinux port 등록
- 백준
- centos pyhon 설치
- 1697
- InfluxDB
- 정규식 활용
- telegraf
- python os
- gcc regex
- g++ 업데이트
- snmp
- linux시간으로 변경
- python subprocess
- 정규식 컴파일
- c++ 정규식
- c3 축 없애기
- c3 step graph
- semanage
Archives
- Today
- Total
리셋 되지 말자
[백준] 11724 본문
dfs로 풀었는데 분명 연결 요소 개수는 분명 맞는데 자꾸 50%에 틀리던 중, 아무것도 연결 되지 않은 것도 연결 요소로 count해야 한다고 한다. 젠장 한시간 뻘짓함
예시 ) 간선이 5개고 (1,2), (2,3), (3,4)로 주어지면 정답은 2 여야 한다. (5는 아무것도 연결되어 있지 않음)
dfs 코드를 그대로 두고, 입력을 다 받은 뒤 빈 행을 체크해서 연결요소를 +1 해주어서 해결
#include <bits/stdc++.h>
//#define INF 1e9
using namespace std;
int n, m;
int **arr;
int cnt;
stack<pair<int, int>> s;
void dfs()
{
while(!s.empty()){
int y=s.top().second;
//cout<<"y : "<< y<<'\n';
int i=1;
for(; i<=n; i++){
if(arr[y][i]==1){
arr[y][i]=0;
s.push({y,i});
break;
}
}
if(i==n+1){
s.pop();
}
}
cnt++;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
arr = new int *[n + 1]();
for (int i = 1; i <= n; i++)
{
arr[i] = new int[n + 1]();
}
while (m--)
{
int x, y;
cin >> x >> y;
arr[x][y] = 1;
arr[y][x] = 1;
}
for(int i=1; i<=n; i++){
int none=0;
for(int j=1; j<=n; j++){
if(arr[i][j]==1)none=1;
}
if(none==0)cnt++;
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
if (arr[i][j] == 1)
{
s.push({i, j});
arr[i][j]=0;
dfs();
}
}
}
cout << cnt;
return 0;
}
'알고리즘' 카테고리의 다른 글
[백준 1920] 수 찾기 - 해시, 이분탐색, Counter, Set (0) | 2021.12.22 |
---|---|
[백준 1654] 랜선 자르기 - 이분탐색 (0) | 2021.12.22 |
pair 구성요소를 같은 vector 정렬하기 (0) | 2020.08.14 |
[우선순위 큐(Heap)] c++ (0) | 2020.06.14 |
[백준 1654] 랜선 자르기 (0) | 2020.06.09 |
Comments