https://www.acmicpc.net/problem/14864
[난이도] Gold4
[유형] ad hoc
[풀이]
안풀려서 다른 사람의 풀이를 참고하였다.
ad hoc 문제라고 한다. bfs,dfs,dp 등 정형화된 문제유형이 아닌 해당 문제에만
특화된 풀이법으로 풀어야 하는 문제라고 한다. (창의적으로..)
이 문제는 배열 a[i]=i (i:1~N) 으로 설정해놓고
(u,v) 쌍에 대해 a[u]++,a[v]-- 를 해주면 답이 나온다.
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Gold4/14864.cpp
#include <cstdio>
int N,M,a[100001],exist[100001];
int main(){
scanf("%d%d",&N,&M);
for(int i=1;i<=N;i++) a[i]=i;
while(M--){
int u,v;
scanf("%d%d",&u,&v);
a[u]++,a[v]--;
}
for(int i=1;i<=N;i++) {
if(exist[a[i]]){
puts("-1");
return 0;
}
exist[a[i]]=1;
}
for(int i=1;i<=N;i++) printf("%d ",a[i]);
}
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Gold4] 14923 : 미로 탈출 (C++) (0) | 2021.01.13 |
---|---|
[BOJ/백준][Gold4] 2655 : 가장높은탑쌓기 (C++) (0) | 2021.01.13 |
[BOJ/백준][Gold4] 14938 : 서강그라운드 (C++) (0) | 2021.01.13 |
[BOJ/백준][Gold4] 11967 : 불켜기 (C++) (0) | 2021.01.13 |
[BOJ/백준][Gold4] 1344 : 축구 (C++) (0) | 2021.01.13 |