반응형
https://www.acmicpc.net/problem/1260
배열 초기화 방법 fill vs memset - 백준 알고리즘 오답노트 1260
#1. 문제를 잘 읽어보면 정점의 번호가 작은것 부터 탐색을 해야됨.
근대 백터에 u,v 입력때 정점의 번호는 랜덤이다. 그래서 정렬을 해줘야 된다.
문제
그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오.
단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고,
더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다.
#2. 배열 초기화 방법 memset vs fill
1. memset은 cstring 에 fill은 algorithm 해더 파일에
//check배열 초기화
//memset(check,0,sizeof(check));
fill(check,check+sizeof(check),0); // 포인터의 개념상 아래가 맞음!
//fill(check.begin(),check.end(),0); // X
//1260
#include<cstdio>
#include<vector>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
vector<int> graph[1001];
bool check[1001];
void dfs(int node){
check[node] = true;
printf("%d",node); //디버깅
for(int i = 0; i< graph[node].size() ; i++){
int nnode = graph[node][i];
if(check[nnode] == false){
printf(" ");
dfs(nnode);
}
}
}
void bfs(int node){
queue<int> q; check[node] = true; q.push(node);
while(!q.empty()){
int node = q.front(); q.pop();
printf("%d ",node);
for( int i= 0; i < graph[node].size(); i++){
int nnode = graph[node][i];
if(check[nnode] == false){
q.push(nnode); check[nnode] = true;
}
}
}
}
int main(){
int N,M,V; scanf("%d %d %d",&N,&M,&V);
for(int i= 0 ; i< M ; i++){
int u,v; scanf("%d %d",&u,&v);
graph[u].push_back(v);
graph[v].push_back(u);
}
for (int i=1; i<=N; i++) {
sort(graph[i].begin(),graph[i].end());
}
dfs(V);
memset(check,0,sizeof(check));
printf("\n");
bfs(V);
puts("");
return 0;
}
//FB1. 백터에 u,v 박을때 정점의 번호가 작은것 부터 안박는단 말이야. - 그래서 정렬을 해줘야됨.
/*
문제
그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오.
단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고,
더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다.
*/
//FB2. 배열 초기화 방법 memset vs fill
/*
1. memset은 cstring 에 fill은 algorithm 해더 파일에
//check배열 초기화
//memset(check,0,sizeof(check));
fill(check,check+sizeof(check),0); // 포인터의 개념상 아래가 맞음!
//fill(check.begin(),check.end(),0); // X
*/
플라즈마 IT 블로그 - 코딩 공부 정리, IT 정보 공유
https://plasmacodeing.tistory.com/
조금이라도 도움이 되었다면 공감 및 댓글 주세요~~
반응형
'알고리즘 > 백준[BOJ] 오답노트' 카테고리의 다른 글
알고리즘 고수의 코드를 보다. - 백준 알고리즘 오답노트 5073 (0) | 2019.05.07 |
---|---|
다이나믹 프로그래밍 오버플로어 - 백준 알고리즘 오답노트 1012 (0) | 2019.05.07 |
C 숫자 각 자리수 분해. 이,일의 자리수 분해 - 백준 알고리즘 오답노트 1110 (0) | 2019.05.06 |
C++ int 오버플로어 예측 - 백준 알고리즘 오답노트 2004 (0) | 2019.05.06 |
알고리즘 문제풀이전에 할것. 자료구조 선택하기 - 백준 알고리즘 오답노트 1012 (0) | 2019.05.06 |