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 |
Tags
- BOJ
- c++ #boj #
- 3D #Reconstruction #computer #vision #volume #metric #tsdf #kinect #fusion
- 사이클 없는 그래프
- backtracking #codetree #디버깅 #삼성코테
- 투포인터 #백준 #boj #20922 #22862
- hcpc
- 쌤쌤쌤
- 16202
- LIS #가장긴증가하는부분수열 #
- c++ #입출력 #속도 #ios #sync_with_stdio #cin #cout #tie
- 진법변환 #2to10 #10to2 #이진법 #십진법 #변환 #bitset #c++
- 3343
- graph #최단경로
- 최소 #공배수 #최대 #공약수 #유클리드 #호제법 #lcm #gcd #c++ #boj #3343 #백준 #장미
- boj #백준
- C++
- 백준
- 30870
- 이분탐색 #dp #11053
- N번째큰수
- 줄어드는수
- 레드아보
- 20117
- 백준 #다익스트라 #dijkstra #9370 #c++
- 호반우 상인
- 22869
- 코딩
- 1174
- graph
Archives
- Today
- Total
hyunjin
[C++][BOJ/DFS와 BFS/1260] fill, memset 본문
728x90
소스 코드
#include <bits/stdc++.h>
#define MAX 1001
using namespace std;
void BFS(int s , vector<int> g[], bool visit[]){
queue<int> q;
q.push(s);
visit[s]=true;
while( !q.empty() ){
int current = q.front(),next;
q.pop();
cout<<current<<" ";
for(int i = 0 ; i <g[current].size();i++){
next = g[current][i];
if(!visit[next]){
q.push(next);
visit[next]=true;
}
}
}
}
void DFS(int start,vector<int> g[], bool visit[]){
stack<int> s;
s.push(start);
visit[start]=true;
cout<<start<<" ";
while( !s.empty() ){
int current = s.top(),next;
s.pop();
for(int i = 0 ; i < g[current].size();i++ ){
next = g[current][i];
if(!visit[next]){
s.push(current);
s.push(next);
cout<<next<<" ";
visit[next]=true;
break;
}
}
}
}
int main(){
ios::sync_with_stdio(0); cin.tie(0);cout.tie(0);
int s , m ,n;
cin >>n>>m>>s;
vector<int> g[n+1];
bool visit[n+1];
for(int i = 0 ; i < m ; i++ ){
int u,v;
cin >>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
for(int i = 1; i<=n ; i++ ) sort(g[i].begin(),g[i].end());
fill(visit,visit + n +1,false);
DFS(s,g,visit);
cout<<"\n";
fill(visit,visit + n +1,false);
BFS(s,g,visit);
return 0;
}
DFS에서 출력하는 위치 조심.
std::fill
fill( 시작 주소, 끝 주소 , val )
단 끝 주소는 포함하지 않음.
bool visit[n+1];
fill(visit,visit + n +1,false);
memset
memset( 배열 시작 주소, 값, 배열 크기 )
단 , 배열값을 0, -1로 채울 때만 사용해야함.
int arr[10];
memset(arr, 0 , sizeof(arr));
참고
728x90
'알고리즘 연습 > 백준' 카테고리의 다른 글
[C++][BOJ11501] 그리디 알고리즘 (0) | 2021.07.10 |
---|---|
[C++][BOJ17248] ceil 소숫점 올림 (0) | 2021.07.01 |
[C++][BOJ-소수 관련1978,] 소수찾기, 소인수분해 (0) | 2021.02.17 |
[C++][BOJ-11005/2745/1373]진법 변환, stoi , cout << oct, &연산 , -2 진법 (0) | 2021.02.16 |
[C++][BOJ-2609]최대공약수,최소공배수 관련 문제들 __gcd (0) | 2021.02.16 |