250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준#BOJ#2615#오목
- 백준#boj#16932#모양만들기
- 백준#BOJ#12865#평범한배낭
- 백준#BOJ#8012#한동이는영업사원
- 백준#BOJ#14501#퇴사#브루트포스
- 백준#boj#12755
- 백준#BOJ#1939#중량제한
Archives
- Today
- Total
순간을 성실히, 화려함보단 꾸준함을
[ boj : 18223 ] 민준이와 마산 그리고 건우 본문
https://www.acmicpc.net/problem/18223
해설 : 전형적인 다익스트라 문제입니다. 다만 신경쓸만한 부분은 최단거리 중에 건우를 만날수 있냐 없냐인데 이 부분은 배열 하나만 선언해주면 됩니다.
전 check 배열하나 선언해 준 다음 다익스트라를 돌리면서 가중치가 '작거나 같을때' OR연산으로 체크해 주었습니다. 이때 주의할점은 priority_queue에 push 를 하는 경우는 무조건 가중치가 '작을때만' 해주어야 합니다.
같을때 넣어주면 동일한 정점이 다수가 pq에 들어가게 되겠죠?
(참고로 전 1번에서 n 번정점이 아닌 뒤집어서 탐색해주었습니다.)
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
struct info {
int to, weight;
bool operator<(const info& cur) const {
return weight > cur.weight;
}
};
int n, m,p;
bool check[5001];
vector<info> v[5001];
void solve();
void djik(int x, int y);
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
while (t--)solve();
return 0;
}
void solve()
{
cin >> n >> m >> p;
int x, y, w;
for (int i = 0; i < m; i++) {
cin >> x >> y >> w;
v[x].push_back({ y,w });
v[y].push_back({ x,w });
}
djik(n, 1);
//for (int i = 1; i <= n; i++)
// cout << check[i] << " ";
if (check[1])cout << "SAVE HIM";
else cout << "GOOD BYE";
}
void djik(int x, int y)
{
int dist[5001];
for (int i = 1; i <= n; i++) dist[i] = (int)1e9;
priority_queue<info> pq;
dist[x] = 0;
pq.push({ x,0 });
check[p] = true;
while (!pq.empty())
{
info cur = pq.top();
pq.pop();
if (dist[cur.to] < cur.weight)continue;
for (int i = 0; i < v[cur.to].size(); i++) {
int next = v[cur.to][i].to;
int next_weight = v[cur.to][i].weight;
if (dist[next] >= next_weight + dist[cur.to]) {
check[next] |= check[cur.to];
if (dist[next] > next_weight + dist[cur.to]) {
dist[next] = next_weight + dist[cur.to];
pq.push({ next,dist[next] });
}
}
}
}
}
'알고리즘,SQL > 백준,BOJ' 카테고리의 다른 글
모바일에서 '\'와 '₩' 는 다르다!!! (0) | 2022.02.04 |
---|---|
[ boj : 14658 ] 하늘에서 별똥별이 빗발친다 (0) | 2022.02.03 |
memcpy에 string 형을 쓰면 안될까???? (0) | 2022.02.01 |
[ boj : 2799 ] 블라인드 (0) | 2022.01.31 |
[ boj : 16507 ] 어두운 건 무서워 (0) | 2022.01.29 |