Submission #1531369
Source Code Expand
#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <cstring>
#include <map>
#include <queue>
#include <cmath>
#define MOD 1000000007
#define ll long long
#define ld long double
using namespace std;
template <class T> struct Dijkstra {
struct Edge{
long long to;
T cost;
Edge(long long _to, T _cost) : to(_to), cost(_cost) {}
};
const T INF = numeric_limits<T>::max() / 2;
vector< vector< Edge > > G;
vector< T > d;
Dijkstra (long long n) : G(n), d(n) {}
void add_directed_edge(long long a, long long b, T c) {
G[a].push_back(Edge(b,c));
}
void add_undirected_edge(long long a, long long b, T c) {
G[a].push_back(Edge(b,c));
G[b].push_back(Edge(a,c));
}
void init(long long s) {
priority_queue< pair<T,long long>,vector< pair<T,long long> >, greater< pair<T,long long> > > que;
fill(d.begin(), d.end(), INF);
d[s] = 0;
que.push(make_pair(0,s));
while (!que.empty()){
pair<T,long long> p = que.top();
que.pop();
long long v = p.second;
if (d[v] < p.first) continue;
for (long long i = 0; i < G[v].size(); i++) {
Edge e = G[v][i];
if (d[e.to] > d[v] + e.cost) {
d[e.to] = d[v] + e.cost;
que.push(make_pair(d[e.to],e.to));
}
}
}
}
T dist(long long a) {
return d[a];
}
vector<long long> route(long long a, long long b){
}
};
int main(){
ll N,M;
vector<ll> l;
vector<pair<ll,ll> >uv;
vector<pair<ll,ll> >memo;//pair(to, cost)
vector<ll> result;
cin.tie(0);
ios::sync_with_stdio(false);
cin >> N >> M;
for(ll i = 0;i< M;i++){
ll inu,inv,inl;
cin >> inu >> inv >> inl;
inu--;inv--;
if(inu==0)memo.push_back(make_pair(inv, inl));
else if(inv==0)memo.push_back(make_pair(inu, inl));
else{
uv.push_back(make_pair(inu,inv));
l.push_back(inl);
}
}
Dijkstra<ll> road(N);
if(uv.size()==0){
cout << "-1" << endl;
return 0;
}
for(ll i =0;i<uv.size();i++){
road.add_undirected_edge(uv[i].first,uv[i].second,l[i]);
}
//memoから一つずつ取り出して、ダイクストラ構築して計算
for(ll i =0;i<memo.size();i++){
road.init(memo[i].first);
for(ll j = i+1;j<memo.size();j++){
ll d=road.dist(memo[j].first);
if(d==-1) continue;
d+=memo[i].second;
d+=memo[j].second;
result.push_back(d);
}
}
sort(result.begin(), result.end());
if(result.size()==0) cout << "-1" << endl;
else cout << result[0] << endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
C - Blue Bird |
User |
ukohank517 |
Language |
C++14 (GCC 5.4.1) |
Score |
100 |
Code Size |
2650 Byte |
Status |
AC |
Exec Time |
110 ms |
Memory |
4852 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
100 / 100 |
Status |
|
|
Set Name |
Test Cases |
Sample |
sample_01.txt, sample_02.txt, sample_03.txt |
All |
sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt, subtask1_30.txt |
Case Name |
Status |
Exec Time |
Memory |
sample_01.txt |
AC |
1 ms |
256 KB |
sample_02.txt |
AC |
1 ms |
256 KB |
sample_03.txt |
AC |
1 ms |
256 KB |
subtask1_01.txt |
AC |
16 ms |
1020 KB |
subtask1_02.txt |
AC |
7 ms |
768 KB |
subtask1_03.txt |
AC |
50 ms |
2424 KB |
subtask1_04.txt |
AC |
1 ms |
256 KB |
subtask1_05.txt |
AC |
9 ms |
768 KB |
subtask1_06.txt |
AC |
56 ms |
2424 KB |
subtask1_07.txt |
AC |
3 ms |
384 KB |
subtask1_08.txt |
AC |
1 ms |
256 KB |
subtask1_09.txt |
AC |
57 ms |
2424 KB |
subtask1_10.txt |
AC |
19 ms |
1404 KB |
subtask1_11.txt |
AC |
1 ms |
256 KB |
subtask1_12.txt |
AC |
3 ms |
512 KB |
subtask1_13.txt |
AC |
8 ms |
768 KB |
subtask1_14.txt |
AC |
1 ms |
256 KB |
subtask1_15.txt |
AC |
102 ms |
4724 KB |
subtask1_16.txt |
AC |
27 ms |
1528 KB |
subtask1_17.txt |
AC |
3 ms |
512 KB |
subtask1_18.txt |
AC |
42 ms |
2424 KB |
subtask1_19.txt |
AC |
42 ms |
2296 KB |
subtask1_20.txt |
AC |
8 ms |
896 KB |
subtask1_21.txt |
AC |
13 ms |
1020 KB |
subtask1_22.txt |
AC |
87 ms |
3956 KB |
subtask1_23.txt |
AC |
110 ms |
4852 KB |
subtask1_24.txt |
AC |
10 ms |
896 KB |
subtask1_25.txt |
AC |
28 ms |
1528 KB |
subtask1_26.txt |
AC |
42 ms |
2804 KB |
subtask1_27.txt |
AC |
28 ms |
2424 KB |
subtask1_28.txt |
AC |
4 ms |
640 KB |
subtask1_29.txt |
AC |
45 ms |
2932 KB |
subtask1_30.txt |
AC |
1 ms |
256 KB |