본문 바로가기

Algorithm

(203)
[BOJ] 23793번 두 단계 최단 경로 1 (C++) https://www.acmicpc.net/problem/23793 23793번: 두 단계 최단 경로 1 서준이는 아빠로부터 생일선물로 세계 지도를 받아서 매우 기뻤다. 세계 지도에서 최단 경로를 찾는 프로그램을 개발해서 아빠께 감사의 마음을 전달하려고 한다. 세계 지도는 도시를 정점으 www.acmicpc.net #include #include #include #define INF 2e9 #define MAX 100001 #define MAX_EDGE 200001 using namespace std; int n, m, x, y, z; int d[MAX]; vector v[MAX_EDGE]; void dijkstra(int start){ for(int i = 0; i start_to_next_dis){ ..
[BOJ] 1238번 파티 (C++) https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net #include #include #include #define INF 987654321 #define MAX 1001 #define MAX_EDGE 10001 using namespace std; int n, m, x; int d[MAX]; vector v[MAX_EDGE]; void dijkstra(int start){ for(int i = 1; i > n >> m..
[BOJ] 11779번 최소비용 구하기 2 (C++) https://www.acmicpc.net/problem/11779 11779번: 최소비용 구하기 2 첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스 www.acmicpc.net #include #include #include #include #define MAX_EDGE 1001 #define MAX 100001 #define INF 987654321 using namespace std; int d[MAX]; int pv[MAX]; vector v[MAX_EDGE]; stack st; void dijkstra(int start){ d[st..
[BOJ] 9694번 무엇을 아느냐가 아니라 누구를 아느냐가 문제다 (C++) https://www.acmicpc.net/problem/9694 9694번: 무엇을 아느냐가 아니라 누구를 아느냐가 문제다 맨위 첫 번째 줄에 T(1 > t; for(int k = 0; k > n >> m; for(int i = 0; i > a >> b >> c; v[a].push_back({c, b}); v[b].push_back({c, a}); } dijkstra(); cout
[BOJ] 5972번 택배 배송 (C++) https://www.acmicpc.net/problem/5972 5972번: 택배 배송 농부 현서는 농부 찬홍이에게 택배를 배달해줘야 합니다. 그리고 지금, 갈 준비를 하고 있습니다. 평화롭게 가려면 가는 길에 만나는 모든 소들에게 맛있는 여물을 줘야 합니다. 물론 현서는 www.acmicpc.net #include #include #include #define MAX_VERTEX 50001 #define MAX 50001 #define INF 987654321 using namespace std; int n, m; int d[MAX_VERTEX]; vector edge[MAX]; void dijkstra(){ d[1] = 0; priority_queue pq; pq.push({0, 1}); while..
[BOJ] 17250번 은하철도 (C++) https://www.acmicpc.net/problem/17250 17250번: 은하철도 입력 데이터가 큰 관계로, 빠른 입출력을 사용하는 것을 권장합니다. www.acmicpc.net #include using namespace std; int parent[100100]; int sum[100100]; int getParent(int x){ if(x == parent[x]) return x; return parent[x] = getParent(parent[x]); } void unionParent(int a, int b){ a = getParent(a); b = getParent(b); if(a > b){ parent[a] = b; sum[b] += sum[a]; } else{ parent[b] = ..
[BOJ] 1863번 스카이라인 쉬운거 (C++) https://www.acmicpc.net/problem/1863 1863번: 스카이라인 쉬운거 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 50,000) 다음 n개의 줄에는 왼쪽부터 스카이라인을 보아 갈 때 스카이라인의 고도가 바뀌는 지점의 좌표 x와 y가 주어진다. (1 ≤ x ≤ 1,000,000. 0 ≤ y ≤ 500,000) 첫 www.acmicpc.net #include #include #include #include using namespace std; int main() { int n; cin >> n; vector v; for(int i = 0; i > a >> b; v.push_back(b); } stack st; int cnt = 0; fo..
[BOJ] 16401번 과자 나눠주기 (C++) https://www.acmicpc.net/problem/16401 16401번: 과자 나눠주기 첫째 줄에 조카의 수 M (1 ≤ M ≤ 1,000,000), 과자의 수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 과자 N개의 길이 L1, L2, ..., LN이 공백으로 구분되어 주어진다. 과자의 길이는 (1 ≤ L1, L2, ..., LN ≤ 1, www.acmicpc.net #include #include #include using namespace std; int main() { long long m, n; cin >> m >> n; vector v; for(int i = 0; i > x; v.push_back(x); } sort(v.beg..