Electro-Communication

2 secs 1024 MB
dyktr_06's icon dyktr_06

この問題は N+1iN+MN + 1 \leq i \leq N + M について、 頂点 ii を始点としたダイクストラ法を行い、それぞれの頂点 j(1jN)j \: (1 \leq j \leq N) について最小の時間を求めればよいことが分かります。

しかし、愚直に行うと O(MKlog(N+M))O( MK \log (N + M)) の計算量がかかってしまい、実行制限時間に間に合いません。

ここで、仮想頂点 SS を用意し、頂点 SS と それぞれの ii についてコスト 00 の辺を張ることによって、11 回のダイクストラ法で全ての頂点に対する最小の時間を求めることができます。

計算量は O(Klog(N+M)O(K \log (N + M) で十分高速です。