알고리즘/DFS & BFS
백준[24480] 알고리즘 수업 - 깊이 우선 탐색 2
HJ39
2023. 1. 10. 00:23
24479번 문제의 오름차순에서 내림차순으로 변경된 것 밖에 없다.
#include <bits/stdc++.h>
int *dfsRes;
int dfsN2,dfsM2,dfsR2;
vector<int> dfsList2[100001];
int cnt2 = 0;
bool dfsVisited2[100001]{false};
void dfs24480(int v){
if(dfsVisited2[v])
return;
dfsVisited2[v] = true;
cnt2++;
dfsRes[v] = cnt2;
for(int i=0;i<(int)dfsList2[v].size();i++){
int next = dfsList2[v][i];
dfs24480(next);
}
}
bool compare(int a, int b){
return a>b;
}
void DFS2(){
scanf("%d%d%d",&dfsN2,&dfsM2,&dfsR2);
dfsRes = new int[dfsN2+1];
for(int i=0;i<dfsM2;i++){
int in3,in4;
scanf("%d%d",&in3,&in4);
dfsList2[in3].push_back(in4);
dfsList2[in4].push_back(in3);
}
for(int i=1;i<=dfsN2;i++){
sort(dfsList2[i].begin(),dfsList2[i].end(),compare);
}
dfs24480(dfsR2);
for(int i=1;i<=dfsN2;i++){
printf("%1d\n",dfsRes[i]);
}
}