結果
| 問題 | No.17 2つの地点に泊まりたい |
| コンテスト | |
| ユーザー |
goodbaton
|
| 提出日時 | 2019-02-23 13:21:49 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 5,000 ms |
| コード長 | 1,719 bytes |
| 記録 | |
| コンパイル時間 | 666 ms |
| コンパイル使用メモリ | 97,004 KB |
| 実行使用メモリ | 7,716 KB |
| 最終ジャッジ日時 | 2025-12-01 16:11:28 |
| 合計ジャッジ時間 | 1,775 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 28 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:56:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
56 | scanf("%d", &n);
| ~~~~~^~~~~~~~~~
main.cpp:58:29: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
58 | for(int i=0;i<n;i++) scanf("%d", s+i);
| ~~~~~^~~~~~~~~~~
main.cpp:67:8: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
67 | scanf("%d", &m);
| ~~~~~^~~~~~~~~~
main.cpp:71:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
71 | scanf("%d%d%d", &a, &b, &c);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <iostream>
#include <complex>
#include <string>
#include <algorithm>
#include <numeric>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <functional>
#include <cassert>
typedef long long ll;
using namespace std;
#ifndef LOCAL
#define debug(x) ;
#else
#define debug(x) cerr << __LINE__ << " : " << #x << " = " << (x) << endl;
template <typename T1, typename T2>
ostream &operator<<(ostream &out, const pair<T1, T2> &p) {
out << "{" << p.first << ", " << p.second << "}";
return out;
}
template <typename T>
ostream &operator<<(ostream &out, const vector<T> &v) {
out << '{';
for (const T &item : v) out << item << ", ";
out << "\b\b}";
return out;
}
#endif
#define mod 1000000007 //1e9+7(prime number)
#define INF 1000000000 //1e9
#define LLINF 1000000000000000000LL //1e18
#define SIZE 55
int main(){
int n, m, s[SIZE];
ll dist[SIZE][SIZE];
scanf("%d", &n);
for(int i=0;i<n;i++) scanf("%d", s+i);
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
dist[i][j] = LLINF;
}
dist[i][i] = 0;
}
scanf("%d", &m);
for(int i=0;i<m;i++){
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
dist[a][b] = c;
dist[b][a] = c;
}
for(int k=0;k<n;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
ll ans = LLINF;
for(int i=1;i<n-1;i++) {
for(int j=1;j<n-1;j++) {
if (i == j) continue;
ans = min(ans, dist[0][i] + dist[i][j] + dist[j][n-1] + s[i] + s[j]);
}
}
cout << ans << endl;
return 0;
}
goodbaton