[백준] 1738번 골목길
·
백준 문제/Bellman-Ford
문제: 1738번: 골목길 #include #include #include #include #include #include #include #include #include #include // setprecision을 사용하기 위한 헤더#include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, m; // n: 교차 지점 수(정점), m: 골목길의 개수(간선) cin >> n >> m; vector, int>> edges; // 간선들 저장해놓기 vector> reverseEdges(n + 1); // 역방향 간선들 저장해놓기(정점 n 에 도달할 수 있는 노드들을 찾기 위..
[백준] 11657번 타임머신
·
백준 문제/Bellman-Ford
문제: 11657번: 타임머신   #include #include #include #include #include #include #include #include #include #include // setprecision을 사용하기 위한 헤더#include using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, m; // n: 도시의 개수, m: 버스 노선의 개수 cin >> n >> m; vector, int>> edges; // 버스의 노선 정보 for (int i = 0; i > a >> b >> c; edges.push_back(make_pair(make_pair(a, b..
[백준] 1238번 파티
·
백준 문제/Dijkstra
문제: 1238번: 파티  내 코드: 다익스트라 n+1 번 돌리는 코드..#include #include #include #include #include #include #include #include #include #include // setprecision을 사용하기 위한 헤더#include using namespace std;// 연결 정보를 저장하기 위한 linkedList// first: 가중치, second: 연결정점// 0 번 인덱스는 안 쓸 것. 인덱스 계산 편하게 하기 위해 1001 만큼의 공간 잡음vector> linkedList[1001];int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, m..
[백준] 1753번 최단경로
·
백준 문제/Dijkstra
문제: 1753번: 최단경로  #include #include #include #include #include #include #include #include #include #include // setprecision을 사용하기 위한 헤더#include using namespace std;// 0 번 인덱스는 안 쓸 거임요..// first: 가중치, second: 연결 노드 번호vector> linkedList[20001]; // 링크드 리스트int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int v, e; // v: 정점의 개수, e: 간선의 개수 cin >> v >> e; int startNode; // 시작 정점 ..
[백준] 1916번 최소비용 구하기
·
백준 문제/Dijkstra
문제: 1916번: 최소비용 구하기  #include #include #include #include #include #include #include #include #include #include // setprecision을 사용하기 위한 헤더#include using namespace std;// 각 노드들의 인접리스트를 만들 이차원 벡터// a 번째 노드와 연결되어 있는 b 번째 노드까지의 거리를 저장해둔 값// adj_list[x].push(make_pair(y,z)) 에서 x 는 a 번째 노드, y 는 b 번째 노드, z 는 거리vector> adj_list[100001]; // 인접 리스트int main() { ios_base::sync_with_stdio(false); cin.tie(0)..
[백준] 1744번 수 묶기
·
백준 문제/그리디
문제: 1744번: 수 묶기  #include #include #include #include #include #include #include #include #include #include // setprecision을 사용하기 위한 헤더using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; priority_queue, greater> nums; for (int i = 0; i > tmp; nums.push(tmp); } int sum = 0; while (nums.size() >= 2) { bool flag = nums.size() % 2 == 0 ? tr..
[백준] 1774번 우주신과의 교감
·
백준 문제/MST
문제: 1774번: 우주신과의 교감  #include #include #include #include #include #include #include #include #include #include // setprecision을 사용하기 위한 헤더using namespace std;vector nodes; // 정점이 속한 집합 번호vector> coordinates; // 황선자와 우주신들의 좌표struct compare { bool operator()(pair, double> a, pair, double> b) { return a.second > b.second; }};// 각 정점이 속한 집합 번호 리턴int find_set(int u) { if (nodes[u] == u) return u; ..
[백준] 16562번 친구비
·
백준 문제/MST
문제: 16562번: 친구비  #include #include #include #include #include #include #include #include #include using namespace std;vector nodes; // 정점들// 우선 순위 큐가 pair 의 두 번째 요소를 기준으로 최소힙으로 동작할 수 있도록 하는 비교 함수 객체 만들기struct compare { bool operator()(pair, int> a, pair, int> b) { return a.second > b.second; }};// 각 정점이 속한 집합 번호를 반환하는 함수int find_set(int u) { if (nodes[u] == u) return u; return nodes[u] = find_..
[백준] 4386번 별자리 만들기
·
백준 문제/MST
문제: 4386번: 별자리 만들기  #include #include #include #include #include #include #include #include using namespace std;vector nodes;vector> coordinates; // 좌표값들(좌푤를 노드와 매핑하는데 이용할 것)// 두 번째 요소인 가중치를 기준으로 최소힙으로 동작하도록 하기 위한 사용자 정의 함수 객체struct compare { // 우선 순위 큐의 디폴트는 최대힙으로 동작 // 이를 최소힙으로 동작하도록 해주려면 a>b 이를 리턴해줘야함. // 근데 지금 두번째 요소를 기준으로 최소힙으로 만드니까 a.second > b.second 이렇게 한 것!! bool operator()(pair, float>..
[백준] 1197번 최소 스패닝 트리
·
백준 문제/MST
문제: 1197번: 최소 스패닝 트리  #include #include #include #include #include #include #include using namespace std;int compare(pair, int> a, pair, int> b) { return a.second node; // 그래프의 정점// 정점이 속한 집합의 번호 리턴// find_set 하면 타고 올라갈때마다 해당 node 의 값을 해당 집합 번호로 바꿔줄 것..// 다음에 또 접근할 때 아래에서 위까지 타고 올라가는 과정은 반복하지 않기 위함.int find_set(int u) { if (u == node[u]) return u; return node[u] = find_set(node[u]);}// 각 정점이 속..