본문 바로가기

알고리즘74

백준 7562번 : 나이트의 이동 문제 링크 : www.acmicpc.net/problem/7562 내 풀이(2021.3.1.) : BFS #include #include using namespace std; typedef pair pr; int map[300][300] = { 0, }; int visit[300][300] = { 0, }; int dy[] = {-1,-2,-2,-1,1,2,2,1}; int dx[] = { -2,-1,1,2, -2,-1,1,2, }; void init() { for (int i = 0; i < 300; i++) { for (int j = 0; j < 300; j++) { map[i][j] = 0; visit[i][j] = 0; } } } int main() { ios_base::sync_with_stdi.. 2021. 3. 1.
백준 2252번 : 줄 세우기 문제 링크 : www.acmicpc.net/problem/2252 내 풀이(2021.2.10.) : 위상 정렬 #include #include #include using namespace std; int N, M; int indegree[32001]; vector pointing[32001]; vector ordered; void topology_sort() { queue q; for (int i = 1; i > N >> M; for (int i = 0; i > a >> b; pointing[a].push_back(b); indegree[b]++; } topology_sort(); for (int i = 0; i < ordered.size(); i++) {.. 2021. 2. 10.
백준 1647번 : 도시 분할 계획 문제 링크 : www.acmicpc.net/problem/1647 내 풀이(2021.2.6.) : 최소 신장 트리 #include #include #include using namespace std; typedef tuple tp; priority_queue pq; int p[100001]; int find(int n) { if (p[n] != n) p[n] = find(p[n]); return p[n]; } void union_(int a, int b) { a = find(a); b = find(b); if (a < b) p[b] = a; else p[a] = b; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL.. 2021. 2. 6.
백준 1717번 : 집합의 표현 문제 링크 : www.acmicpc.net/problem/1717 내 풀이(2021.2.4.) : 유니언 파인드 #include using namespace std; int parent[1000001]; int find(int x) { if (parent[x] != x) parent[x] = find(parent[x]); return parent[x]; } void union_(int a, int b) { a = find(a); b = find(b); if (a k >> a >> b; if (.. 2021. 2. 4.