diff --git "a/khj20006/202511/14 BOJ P4 \352\265\254\354\212\254 \353\260\234\354\202\254\352\270\260.md" "b/khj20006/202511/14 BOJ P4 \352\265\254\354\212\254 \353\260\234\354\202\254\352\270\260.md" new file mode 100644 index 00000000..9310d8c5 --- /dev/null +++ "b/khj20006/202511/14 BOJ P4 \352\265\254\354\212\254 \353\260\234\354\202\254\352\270\260.md" @@ -0,0 +1,105 @@ +```cpp +#include +using namespace std; +using ll = long long; + +const ll INF = 1e18; +int N, S, E; +map>> mp[8]{}; +vector>> v(100001); +vector dist(100001, INF); +int par[100001]{}; + +int main() { + cin.tie(0)->sync_with_stdio(0); + + cin>>N>>S>>E; + for(int i=1;i<=N;i++) { + int x,y,c; + string d; + cin>>x>>y>>c>>d; + + int dir = -1; + if(d == "N") dir = 0; + if(d == "NE") dir = 1; + if(d == "E") dir = 2; + if(d == "SE") dir = 3; + if(d == "S") dir = 4; + if(d == "SW") dir = 5; + if(d == "W") dir = 6; + if(d == "NW") dir = 7; + + int cost = 0; + for(int j=dir;j()); + + for(int j=1;j, vector>, greater<>> q; + q.emplace(0,S); + while(!q.empty()) { + auto [d,n] = q.top(); q.pop(); + if(d > dist[n]) continue; + if(n == E) { + cout< st; + while(n) { + st.push(n); + n = par[n]; + } + while(!st.empty()) { + cout< d+c) { + dist[i] = d+c; + par[i] = n; + q.emplace(dist[i], i); + } + } + cout<<-1; + +} +```