[PS] BOJ 2252 줄세우기
##BOJ-2252 줄 세우기
https://www.acmicpc.net/problem/2252
본 문제는 단순히 입력을 인접리스트인 그래프로 만든뒤에, 위상정렬한 결과를 출력하면 된다.
solution
#include<iostream>
#include<vector>
#include<list>
#include<algorithm>
#define ALL(C) (C).begin(),(C).end()
using namespace std;
int N, M;
vector<pair<list<int>,bool> > G; //first(key), second(visit)
list<int> tlist;
void DFS(int v) {
G[v].second = true;
for_each(ALL(G[v].first), [](int& elem)->void{
if (!G[elem].second){
DFS(elem);
}
});
tlist.push_front(v);
}
void TopoLogicalSort() {
tlist.clear();
for (int i = 0; i < G.size(); i++){
if (!G[i].second){
DFS(i);
}
}
}
int main() {
cin >> N >> M;
G.assign(N, pair<list<int>,bool>());
for (int i = 0; i < M; i++){
int A, B;
cin >> A >> B;
G[A-1].first.push_back(B-1);
G[A-1].second = false;
}
TogoLogicalSort();
for_each(ALL(tlist), [](int& elem)->void{cout << elem+1 << ' '; });
return 0;
}
Copyright (C) 2016 (KimBom) all rights reserved.
Author And Source
이 문제에 관하여([PS] BOJ 2252 줄세우기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@springkim/PS-BOJ-2252-줄세우기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)