1238๋ฒ: ํํฐ
์ฒซ์งธ ์ค์ N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ ๋ ฅ๋๋ค. ๋ ๋ฒ์งธ ์ค๋ถํฐ M+1๋ฒ์งธ ์ค๊น์ง i๋ฒ์งธ ๋๋ก์ ์์์ , ๋์ , ๊ทธ๋ฆฌ๊ณ ์ด ๋๋ก๋ฅผ ์ง๋๋๋ฐ ํ์ํ ์์์๊ฐ Ti๊ฐ ๋ค์ด
www.acmicpc.net
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#define INF 1e9 //๋ฌดํ์ ๋ปํ๋ ๊ฐ์ผ๋ก 10์ต ์ง์ .
using namespace std;
int N, M, X; //N=๋ง์(๋
ธ๋) M=๋๋ก(๊ฐ์ ) X=๋์ฐฉ์ง
int d[1001]; //์ต์ ์๊ฐ์ ๊ธฐ๋กํด๋๋ ํ
์ด๋ธ
int result[1001]; //i->x->i์ ์๊ฐ์ ๊ธฐ๋กํ๋ ํ
์ด๋ธ
int ans = 0;
vector<pair<int, int>>graph[1001];
//์ผ๋ฐ์ ์ธ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ
void dijkstra(int start) {
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>>pq;
pq.push({ 0,start }); //์ถ๋ฐ์ง๋ ์๊ฐ์ด 0;
d[start] = 0;
while (!pq.empty()) {
int dist = pq.top().first;
int now = pq.top().second;
pq.pop();
if (d[now]<dist) continue; //์ด๋ฏธ ๋ฐฉ๋ฌธ๋ ๋
ธ๋๋ผ๋ฉด ๋ฌด์
for (int i = 0; i < graph[now].size(); i++) {
int neighborDist = dist+graph[now][i].second;
int neighbor = graph[now][i].first;
if (neighborDist < d[neighbor]) {
d[neighbor] = neighborDist;
pq.push({ neighborDist,neighbor });
}
}
}
}
void reset() {
fill(d, d + 1001, INF);
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> N >> M >> X;
for (int i = 0; i < M; i++) {
int a, b, c; cin >> a >> b >> c;
graph[a].push_back({ b,c }); //a์์ b๊น์ง ๊ฐ๋๋ฐ c๋งํผ์ ์๊ฐ์ด ๋ ๋ค.
}
for (int i = 1; i <= N; i++) { //i->X ๊น์ง ์๊ฐ ๊ธฐ๋ก
reset(); //๋งค ํ์๋ง๋ค ์ด๊ธฐํ ์์ผ์ค๋ค.
dijkstra(i);
result[i] = d[X];
}
reset();
dijkstra(X); //์๋ณต์ ํด์ผ ํ๋๊น X์์ ๊ฐ ๋ง์(๋
ธ๋)=i ๊น์ง ๊ฑธ๋ฆฌ๋ d[] ํ
์ด๋ธ์ ๊ธฐ๋ก
for (int i = 1; i <= N; i++) { //X->i๊น์ง์ ์๊ฐ์ i->X ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋ํจ.
result[i] += d[i];
}
for (int i = 1; i <= N; i++) { //i->X->i ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ต๋๊ฐ์ ๊ตฌํ๋ค.
ans = max(ans, result[i]);
}
cout << ans;
}
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 1260๋ฒ - DFS์ BFS (0) | 2021.11.02 |
---|---|
[๋ฐฑ์ค,c++] 1259๋ฒ - ํฐ๋ฆฐ๋๋กฌ์ (0) | 2021.11.02 |
[๋ฐฑ์ค,c++] 1253๋ฒ - ์ข๋ค (0) | 2021.11.02 |
[๋ฐฑ์ค,c++] 12015๋ฒ - ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด2 (0) | 2021.11.02 |
[๋ฐฑ์ค,c++] 1197๋ฒ - ์ต์ ์คํจ๋ ํธ๋ฆฌ (0) | 2021.11.02 |
[๋ฐฑ์ค,c++] 11931๋ฒ - ์ ์ ๋ ฌํ๊ธฐ4 (0) | 2021.11.02 |
๋๊ธ