競プロC++ dijkstra法

そういった理由から別の方には向かないかもしれません
順位 | 名前 | スコア | 称号 | 打鍵/秒 | 正誤率 | 時間(秒) | 打鍵数 | ミス | 問題 | 日付 |
---|---|---|---|---|---|---|---|---|---|---|
1 | ku | 5266 | B++ | 5.3 | 98.3% | 180.0 | 964 | 16 | 50 | 2025/03/02 |
2 | UEC22 | 5150 | B+ | 5.3 | 96.9% | 180.0 | 957 | 30 | 50 | 2025/02/18 |
3 | ku | 5016 | B+ | 5.0 | 99.8% | 180.0 | 904 | 1 | 46 | 2025/02/25 |
関連タイピング
-
Pythonで競プロをする時に早くうちたい1行用語・構文集
プレイ回数1558英語60秒 -
プレイ回数2.1万英字60秒
-
プレイ回数23英字60秒
-
競技プログラミングに特化したc++コードのタイピングです。
プレイ回数689英語長文300秒 -
VS2015 C++ Win32アプリケーションのテンプレート
プレイ回数966英字444打 -
C++のようなもの。
プレイ回数1226英語長文1638打 -
E869120氏が送った煽り性能が高い文章
プレイ回数1979長文297打 -
C++の予約語や関数名などを使います
プレイ回数3620英字30秒
問題文
(#include <iostream>)
#include <iostream>
(#include <vector>)
#include <vector>
(#include <queue>)
#include <queue>
(using namespace std;)
using namespace std;
(using ll = long long;)
using ll = long long;
(struct Edge{)
struct Edge{
(int to;)
int to;
(ll weight;)
ll weight;
(Edge(int t, ll w): to(t), weight(w) {})
Edge(int t, ll w): to(t), weight(w) {}
(int main(){)
int main(){
(int n, m;)
int n, m;
(cin >> n >> m;)
cin >> n >> m;
(for(int i = 0; i < m; ++i){)
for(int i = 0; i < m; ++i){
(int a, b;)
int a, b;
(ll c;)
ll c;
(cin >> a >> b >> c;)
cin >> a >> b >> c;
(--a;)
--a;
(--b;)
--b;
(g[a].push_back(Edge(b, c));)
g[a].push_back(Edge(b, c));
(g[b].push_back(Edge(a, c));)
g[b].push_back(Edge(a, c));
(priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<pair<ll, int>>> pq;)
priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<pair<ll, int>>> pq;
(pq.push({0, 0});)
pq.push({0, 0});
(const ll INF = 1ll << 60;)
const ll INF = 1ll << 60;
(vector<ll> dist(n, INF);)
vector<ll> dist(n, INF);
(dist[0] = 0;)
dist[0] = 0;
(while(!pq.empty()){)
while(!pq.empty()){
(auto [d, v] = pq.top();)
auto [d, v] = pq.top();
(pq.pop();)
pq.pop();
(if(dist[v] != d) continue;)
if(dist[v] != d) continue;
(for(auto ne: g[v]){)
for(auto ne: g[v]){
(int nv = ne.to;)
int nv = ne.to;
(if(dist[nv] > dist[v] + ne.weight){)
if(dist[nv] > dist[v] + ne.weight){
(dist[nv] = dist[v] + ne.weight;)
dist[nv] = dist[v] + ne.weight;
(pq.push({dist[nv], nv});)
pq.push({dist[nv], nv});
(ll res = dist.back();)
ll res = dist.back();
(if(res == INF) res = -1;)
if(res == INF) res = -1;
(cout << res << endl;)
cout << res << endl;
(return 0;)
return 0;