結果
| 問題 |
No.807 umg tours
|
| コンテスト | |
| ユーザー |
lightning
|
| 提出日時 | 2019-03-28 13:07:19 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,783 bytes |
| コンパイル時間 | 1,972 ms |
| コンパイル使用メモリ | 183,388 KB |
| 実行使用メモリ | 16,984 KB |
| 最終ジャッジ日時 | 2024-10-12 19:04:33 |
| 合計ジャッジ時間 | 9,013 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 12 WA * 14 |
ソースコード
#include "bits/stdc++.h"
#define Rep(i,n) for(int i=0;i<n;i++)
#define For(i,n1,n2) for(int i=n1;i<n2;i++)
#define REP(i,n) for(ll i=0;i<n;i++)
#define FOR(i,n1,n2) for(ll i=n1;i<n2;i++)
#define put(a) cout<<a<<endl;
#define all(a) (a).begin(),(a).end()
#define SORT(c) sort((c).begin(),(c).end())
#define TDARRAY(int,a,n,m) vector<vector<int>> a(n,vector<int>(m,0));
using namespace std;
typedef long long ll;
typedef pair<int, int> P;
template<class T> inline bool chmax(T& a, T b) {if(a<b){a=b;return 1;}return 0;}
template<class T> inline bool chmin(T& a, T b) {if(a>b){a=b;return 1;}return 0;}
struct edge{
int to,cost;
};
int n,m;
vector<vector<edge>> g;
vector<vector<ll>> d(2);
int main(){
cin >> n >> m;
d[0].resize(n);
d[1].resize(n);
g.resize(n);
vector<int> a(m);
vector<int> b(m);
vector<int> c(m);
REP(i,m){
cin >> a[i] >> b[i] >> c[i];
a[i]--;b[i]--;
edge e1;
e1.to = b[i];
e1.cost = c[i];
g[a[i]].push_back(e1);
edge e2;
e2.to = a[i];
e2.cost = c[i];
g[b[i]].push_back(e2);
}
priority_queue<P,vector<P>,greater<P>> q;
fill(all(d[0]),1e16);
fill(all(d[1]),1e16);
d[0][0]=d[1][0]=0;
q.push(P(0,0));
while(!q.empty()){
P p = q.top();q.pop();
int v = p.second;
if(d[0][v]<p.first)continue;
REP(i,g[v].size()){
edge e = g[v][i];
if(d[0][e.to]>d[0][v]+e.cost){
d[0][e.to] = d[0][v]+e.cost;
q.push(P(d[0][e.to],e.to));
}
chmin(d[1][e.to],min(d[1][v]+e.cost,d[0][v]));
//put(e.cost);
}
}
REP(i,n){
put(d[0][i]+d[1][i]);
}
return 0;
}
lightning