#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
void dfs( int start, vector< int > graph[ ] , bool check[ ] ) {
stack< int > s;
s.push ( start) ;
check[ start] = true ;
printf ( "%d " ,start) ;
while ( ! s.empty ( ) ) {
int current_node = s.top ( ) ;
s.pop ( ) ;
for ( int i= 0 ; i< graph[ current_node] .size ( ) ; i++ ) {
int next_node = graph[ current_node] [ i] ;
if ( check[ next_node] == false ) {
printf ( "%d " , next_node) ;
check[ next_node] = true ;
// pop()을 했었기 때문에 현재 current_node도 넣어줘야한다.
s.push ( current_node) ;
s.push ( next_node) ;
break ;
}
}
}
}
int main ( ) {
int n, m, start;
cin >> n >> m >> start;
vector< int > graph[ n+ 1 ] ;
bool check [ n+ 1 ] ;
fill( check, check+ n+ 1 , false ) ;
for ( int i= 0 ; i< m; i++ ) {
int u,v;
cin >> u >> v;
graph[ u] .push_back ( v) ;
graph[ v] .push_back ( u) ;
}
// Sorting은 왜 한거지?
// 나중에 하나의 정점에서 다음을 탐색할 때 node 값에 순차적으로 접근해야하기 때문
for ( int i= 1 ; i<= n; i++ ) {
sort( graph[ i] .begin ( ) , graph[ i] .end ( ) ) ;
}
//dfs
dfs( start, graph, check) ;
printf ( "\n " ) ;
return 0 ;
}
// dfs에 들어오면 '방문'한거로 판단
// 해당 위치에 check true로 해준다.
void dfs( int start, vector< int > graph[ ] , bool check[ ] ) {
check[ start] = true ;
printf ( "%d " , start) ;
for ( int i= 0 ; i < graph[ start] .size ( ) ; i++ ) {
int next = graph[ start] [ i] ;
// 방문하지 않았다면
if ( check[ next] == false ) {
// 재귀함수를 호출한다.
dfs( next, graph, check) ;
}
}
}
int main ( ) {
int n, m, start;
cin >> n >> m >> start;
vector< int > graph[ n+ 1 ] ;
bool check [ n+ 1 ] ;
fill( check, check+ n+ 1 , false ) ;
for ( int i= 0 ; i< m; i++ ) {
int u,v;
cin >> u >> v;
graph[ u] .push_back ( v) ;
graph[ v] .push_back ( u) ;
}
// Sorting은 왜 한거지?
// 나중에 하나의 정점에서 다음을 탐색할 때 node 값에 순차적으로 접근해야하기 때문
for ( int i= 1 ; i<= n; i++ ) {
sort( graph[ i] .begin ( ) , graph[ i] .end ( ) ) ;
}
//dfs
dfs( start, graph, check) ;
printf ( "\n " ) ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgZGZzKGludCBzdGFydCwgdmVjdG9yPGludD4gZ3JhcGhbXSwgYm9vbCBjaGVja1tdKXsKCglzdGFjazxpbnQ+IHM7CglzLnB1c2goc3RhcnQpOwoJY2hlY2tbc3RhcnRdID0gdHJ1ZTsKCXByaW50ZigiJWQgIixzdGFydCk7CgoJd2hpbGUoIXMuZW1wdHkoKSl7CgoJCWludCBjdXJyZW50X25vZGUgPSBzLnRvcCgpOwoJCXMucG9wKCk7CgkJZm9yKGludCBpPTA7IGk8Z3JhcGhbY3VycmVudF9ub2RlXS5zaXplKCk7IGkrKyl7CgoJCQlpbnQgbmV4dF9ub2RlID0gZ3JhcGhbY3VycmVudF9ub2RlXVtpXTsKCgkJCWlmKGNoZWNrW25leHRfbm9kZV09PWZhbHNlKXsKCQkJCXByaW50ZigiJWQgIiwgbmV4dF9ub2RlKTsKCQkJCWNoZWNrW25leHRfbm9kZV0gPSB0cnVlOwoJCQkJLy8gcG9wKCnsnYQg7ZaI7JeI6riwIOuVjOusuOyXkCDtmITsnqwgY3VycmVudF9ub2Rl64+EIOuEo+yWtOykmOyVvO2VnOuLpC4KCQkJCXMucHVzaChjdXJyZW50X25vZGUpOwoJCQkJcy5wdXNoKG5leHRfbm9kZSk7CgkJCQlicmVhazsKCQkJfQoJCX0KCX0KCn0KCmludCBtYWluICgpewoKCglpbnQgbiwgbSwgc3RhcnQ7CgljaW4gPj4gbiA+PiBtID4+IHN0YXJ0OwoKCXZlY3RvcjxpbnQ+IGdyYXBoW24rMV07Cglib29sIGNoZWNrIFtuKzFdOwoJZmlsbChjaGVjaywgY2hlY2srbisxLCBmYWxzZSk7CgoJZm9yKGludCBpPTA7IGk8bTsgaSsrKXsKCQlpbnQgdSx2OwoJCWNpbiA+PiB1ID4+IHY7CgoJCWdyYXBoW3VdLnB1c2hfYmFjayh2KTsKCQlncmFwaFt2XS5wdXNoX2JhY2sodSk7Cgl9CgoJLy8gU29ydGluZ+ydgCDsmZwg7ZWc6rGw7KeAPwoJLy8g64KY7KSR7JeQIO2VmOuCmOydmCDsoJXsoJDsl5DshJwg64uk7J2M7J2EIO2DkOyDie2VoCDrlYwgbm9kZSDqsJLsl5Ag7Iic7LCo7KCB7Jy866GcIOygkeq3vO2VtOyVvO2VmOq4sCDrlYzrrLgKCWZvcihpbnQgaT0xOyBpPD1uOyBpKyspewoJCXNvcnQoZ3JhcGhbaV0uYmVnaW4oKSwgZ3JhcGhbaV0uZW5kKCkpOwoJfQoKCS8vZGZzCglkZnMoc3RhcnQsIGdyYXBoLCBjaGVjayk7CglwcmludGYoIlxuIik7CgoJcmV0dXJuIDA7Cn0KCgovLyBkZnPsl5Ag65Ok7Ja07Jik66m0ICfrsKnrrLgn7ZWc6rGw66GcIO2MkOuLqAovLyDtlbTri7kg7JyE7LmY7JeQIGNoZWNrIHRydWXroZwg7ZW07KSA64ukLgp2b2lkIGRmcyhpbnQgc3RhcnQsIHZlY3RvcjxpbnQ+IGdyYXBoW10sIGJvb2wgY2hlY2tbXSl7CgljaGVja1tzdGFydF09IHRydWU7CglwcmludGYoIiVkICIsIHN0YXJ0KTsKCglmb3IoaW50IGk9MDsgaSA8IGdyYXBoW3N0YXJ0XS5zaXplKCk7IGkrKyl7CgkJaW50IG5leHQgPSBncmFwaFtzdGFydF1baV07CgkJLy8g67Cp66y47ZWY7KeAIOyViuyVmOuLpOuptAoJCWlmKGNoZWNrW25leHRdPT1mYWxzZSl7CgkJCS8vIOyerOq3gO2VqOyImOulvCDtmLjstpztlZzri6QuCgkJCWRmcyhuZXh0LCBncmFwaCwgY2hlY2spOwoJCX0KCX0KfQoKaW50IG1haW4gKCl7CgoJaW50IG4sIG0sIHN0YXJ0OwoJY2luID4+IG4gPj4gbSA+PiBzdGFydDsKCgl2ZWN0b3I8aW50PiBncmFwaFtuKzFdOwoJYm9vbCBjaGVjayBbbisxXTsKCWZpbGwoY2hlY2ssIGNoZWNrK24rMSwgZmFsc2UpOwoKCWZvcihpbnQgaT0wOyBpPG07IGkrKyl7CgkJaW50IHUsdjsKCQljaW4gPj4gdSA+PiB2OwoKCQlncmFwaFt1XS5wdXNoX2JhY2sodik7CgkJZ3JhcGhbdl0ucHVzaF9iYWNrKHUpOwoJfQoKCS8vIFNvcnRpbmfsnYAg7JmcIO2VnOqxsOyngD8KCS8vIOuCmOykkeyXkCDtlZjrgpjsnZgg7KCV7KCQ7JeQ7IScIOuLpOydjOydhCDtg5Dsg4ntlaAg65WMIG5vZGUg6rCS7JeQIOyInOywqOyggeycvOuhnCDsoJHqt7ztlbTslbztlZjquLAg65WM66y4Cglmb3IoaW50IGk9MTsgaTw9bjsgaSsrKXsKCQlzb3J0KGdyYXBoW2ldLmJlZ2luKCksIGdyYXBoW2ldLmVuZCgpKTsKCX0KCgkvL2RmcwoJZGZzKHN0YXJ0LCBncmFwaCwgY2hlY2spOwoJcHJpbnRmKCJcbiIpOwoKCXJldHVybiAwOwp9Cg==
compilation info
prog.cpp: In function ‘void dfs(int, std::vector<int>*, bool*)’:
prog.cpp:9:2: error: ‘stack’ was not declared in this scope
stack<int> s;
^~~~~
prog.cpp:9:2: note: ‘std::stack’ is defined in header ‘<stack>’; did you forget to ‘#include <stack>’?
prog.cpp:5:1:
+#include <stack>
using namespace std;
prog.cpp:9:2:
stack<int> s;
^~~~~
prog.cpp:9:8: error: expected primary-expression before ‘int’
stack<int> s;
^~~
prog.cpp:10:2: error: ‘s’ was not declared in this scope
s.push(start);
^
prog.cpp: At global scope:
prog.cpp:69:6: error: redefinition of ‘void dfs(int, std::vector<int>*, bool*)’
void dfs(int start, vector<int> graph[], bool check[]){
^~~
prog.cpp:7:6: note: ‘void dfs(int, std::vector<int>*, bool*)’ previously defined here
void dfs(int start, vector<int> graph[], bool check[]){
^~~
prog.cpp:83:5: error: redefinition of ‘int main()’
int main (){
^~~~
prog.cpp:35:5: note: ‘int main()’ previously defined here
int main (){
^~~~
stdout