Submission #1609381
Source Code Expand
#include<bits/stdc++.h> #define INF 1e9 using namespace std; typedef pair<uint32_t,uint32_t> P; int bitSearchReverse(uint32_t x){ if(x==0)return -1; return 31-__builtin_clz(x); } struct RadixHeap{ vector<P>v[33]; uint32_t last,sz; RadixHeap(){ last=sz=0; } void push(P p){ assert(last<=p.first); sz++; v[bitSearchReverse(p.first^last)+1].push_back({p.first,p.second}); } P top(){ return pop(false); } P pop(bool f=true){ assert(sz); if(!v[0].size()){ int i=1; while(!v[i].size())++i; last=min_element(v[i].begin(),v[i].end())->first; for(P p:v[i])v[bitSearchReverse(p.first^last)+1].push_back(p); v[i].clear(); } P r=v[0].back(); if(f){ sz--; v[0].pop_back(); } return r; } int size(){ return sz; } bool empty(){ return sz==0; } void clear(){ last=sz=0; for(auto a:v)a.clear(); } }; struct Graph{ Graph(int n):E(n),d(n){} vector<vector<P>>E; vector<uint32_t>d; void add_edge(int a,int b,uint32_t c){ E[a].emplace_back(b,c); } void dijkstra(int s){ RadixHeap H; fill(d.begin(),d.end(),INF); H.push({d[s]=0,s}); while(H.size()){ P e=H.top();H.pop(); if(e.first>d[e.second])continue; for(P& a:E[e.second]){ uint32_t x=a.first,y=a.second+e.first; if(y<d[x])d[x]=y,H.push({y,x}); } } } }; main(){ uint32_t i,n,m,a,b,c,x=INF; cin>>n>>m; Graph G(n); for(i=0;i<m;++i){ cin>>a>>b>>c; G.add_edge(--a,--b,c),G.add_edge(b,a,c); } for(i=0;i<n;++i){ G.dijkstra(i); x=min(x,*max_element(G.d.begin(),G.d.end())); } cout<<x<<endl; } /*************************************** ABC012_D http://abc012.contest.atcoder.jp/tasks/abc012_4 referred https://github.com/yosupo06/Algorithm/blob/master/datastructure/buf/RadixHeap.h ****************************************/
Submission Info
Submission Time | |
---|---|
Task | D - バスと避けられない運命 |
User | moeruAI |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 1999 Byte |
Status | AC |
Exec Time | 80 ms |
Memory | 1536 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.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 |
test_01.txt | AC | 1 ms | 256 KB |
test_02.txt | AC | 8 ms | 256 KB |
test_03.txt | AC | 80 ms | 1536 KB |
test_04.txt | AC | 11 ms | 256 KB |
test_05.txt | AC | 32 ms | 640 KB |
test_06.txt | AC | 6 ms | 384 KB |
test_07.txt | AC | 63 ms | 1408 KB |
test_08.txt | AC | 2 ms | 256 KB |
test_09.txt | AC | 24 ms | 640 KB |
test_10.txt | AC | 5 ms | 384 KB |
test_11.txt | AC | 6 ms | 384 KB |
test_12.txt | AC | 20 ms | 384 KB |
test_13.txt | AC | 6 ms | 384 KB |
test_14.txt | AC | 8 ms | 384 KB |
test_15.txt | AC | 59 ms | 1408 KB |
test_16.txt | AC | 9 ms | 384 KB |
test_17.txt | AC | 27 ms | 640 KB |
test_18.txt | AC | 19 ms | 384 KB |
test_19.txt | AC | 10 ms | 384 KB |
test_20.txt | AC | 8 ms | 384 KB |
test_21.txt | AC | 1 ms | 256 KB |
test_22.txt | AC | 12 ms | 384 KB |
test_23.txt | AC | 1 ms | 256 KB |
test_24.txt | AC | 6 ms | 256 KB |
test_25.txt | AC | 6 ms | 256 KB |
test_26.txt | AC | 3 ms | 256 KB |
test_27.txt | AC | 3 ms | 256 KB |
test_28.txt | AC | 5 ms | 256 KB |
test_29.txt | AC | 6 ms | 256 KB |
test_30.txt | AC | 2 ms | 256 KB |
test_31.txt | AC | 1 ms | 256 KB |
test_32.txt | AC | 5 ms | 256 KB |
test_33.txt | AC | 6 ms | 256 KB |
test_34.txt | AC | 1 ms | 256 KB |
test_35.txt | AC | 3 ms | 256 KB |
test_36.txt | AC | 5 ms | 256 KB |