일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Ethereum
- 동시성
- fluent python
- BAEKJOON
- Kubernetes
- guru
- 전문가를 위한 파이썬
- 코어 이더리움 프로그래밍
- Network
- 파이썬
- dockerfile
- Algorithm
- Container
- IMAGE
- docker
- Refactoring
- 플랫폼
- AWS
- 알고리즘
- Python
- function
- rust
- 블록체인
- 이더리움
- Thread
- 러스트
- 백준
- RabbitMQ
- BlockChain
- Fast API
Archives
- Today
- Total
글쓰기 | 방명록 | 관리 |
Victoree's Blog
1916_최소비용 구하기 본문
728x90
Concept & Idea
다익스트라 문제였고, 프림 알고리즘을 이용하여 해결하였다.
메모리 초과는 dp[1][1001] 이 배열만을 선언함으로 해결할 수 있었다.
- 우선 이 문제는 단일 방향의 간선이라는 점도 중요하고, 같은 경로지만 여러대의 버스가 존재할 수 있다. 역시 질문을 잘 읽는 것이 중요하다..
- 원래 메모리 초과가 났을 때, 배열을 2차원으로 선언했었다. 하지만 시작점은 한 곳이고,, 마지막 도착지까지 가려면 반드시 start지점을 거친 값에 더해주어야 하기 때문에, 일차원 배열으로 해결할 수 있다.
Code
#include <iostream>
#include <queue>
using namespace std;
struct node{
int x,y,z;
bool operator()(node a,node b){
return a.z>b.z;
}
};
priority_queue<node,vector<node>,node> pqu;
vector<pair<int, int>> vec[1001];
int n,m,dp[1][1001];
int main(){
cin>>n>>m;
for(int i=0; i<m; i++) {
node temp;
cin>>temp.x>>temp.y>>temp.z;
vec[temp.x].push_back({temp.y,temp.z});
}
int st,en;
cin>>st>>en;
for(int i=1; i<=n; i++) {
if(st!=i)
dp[0][i]=100000001;
}
for(int i=0; i<vec[st].size(); i++) {
node t;
t.x=st; t.y=vec[st][i].first; t.z=vec[st][i].second;
pqu.push(t);
}
while(!pqu.empty()) {
node tem = pqu.top();
pqu.pop();
if(dp[0][tem.y]>dp[0][tem.x]+tem.z) {
dp[0][tem.y]=dp[0][tem.x]+tem.z;
for(int i=0; i<vec[tem.y].size(); i++) {
node t;
t.x=tem.y; t.y=vec[tem.y][i].first; t.z=vec[tem.y][i].second;
pqu.push(t);
}
}
}
cout<<dp[0][en]<<endl;
}
Fealing
시간초과, 메모리 초과, 틀렸습니다로 엄청 고생한 문제이다.
아마 더 일찍 해결할 수 있음에도,, 메모리초과때문에 기분나빠서 나중에 푼 문제다.
필요없는 배열은 없애고 효율적으로 짜기위해 노력한 문제다.. 내 50퍼대 정답율을 잃어버리게 한 문제이기도 하다..
728x90
'Algorithm > 2019~2020' 카테고리의 다른 글
14889_스타트와 링크 (0) | 2021.04.23 |
---|---|
1238_파티 (0) | 2021.04.23 |
1937_욕심쟁이 판다 (0) | 2021.04.23 |
1389_케빈 베이컨의 6단계 법칙 (0) | 2021.04.23 |
1922_네트워크의 연결 (0) | 2021.04.23 |
Comments