タイトル:ヌード最短が、ほとんどがしたい、短絡nは1(なし差)にあります
なお、第1入力N T後のボードのタイトル入力
書式#include <iostreamの> の#include <cmath> の#include <cstdioを> する#include <CStringの> の#include < 文字列 > の#include <マップ> 書式#include <iomanip> 書式#include <アルゴリズム> 書式#include <キュー> の#include <スタック> #include < セット > の#include <ベクトル> // CONST int型MAXN = 1E5 + 5。 #defineは長い長いっ {(-1,11,11- b)はLLのGCDをリターン?B GCD(B、%の; B)} (-1,11,11- b)は{LLのLCM 戻り、(/ GCDを #define MAX INT_MAXの に#define(I、a、b)は(;;私は= Bの<++ I私は= INT)のためFOR の#defineバグはcout << "------------- - "<< ENDL 使用して 名前空間はstdを、 CONSTの INT N = 100010、M = 1000010 。 int型のヘッド[N]、エッジ[M]、次の[M]、D [N]版[N]、。 int型VIS [N]; INTのN、M、TOT。 PRIORITY_QUEUE <ペア< int型、int型 >> QUE。 ボイド追加(int型のx、int型の Y、int型Z) { 版[ ++ TOT = Y、エッジ[TOT = Z。 次【TOT] =頭部[X]、ヘッド[X] = TOTを、 } ボイドダイクストラ() { memsetの(D、9999999、はsizeof (d)参照)。 memsetの(VIS、0、はsizeof (VIS))。 D [N] = 0 ; que.push(make_pair(0 、N))。 一方、(que.size()) { int型のx = que.top()は、第2。 que.pop(); もし(VIS [X] == 1)続けます。 VIS [X] = 1 。 以下のための(int型I =ヘッド[X]; I; I = 次の[I]) { int型、Y = 版[I]; INT Z = エッジ[I]; もし(D [Y]> D [X] + Z) { D [Y] = D [X] + Z。 que.push(make_pair( - D [Y]、Y))。 } } } } int型のmain() { // freopenは( "C:\\ユーザー\\方瑞\\デスクトップ\\ INPUT.TXT"、 "R"、STDIN)。 // freopenは( "C:\\ユーザー\\方瑞\\デスクトップ\\ output.txtと"、 "W"、STDOUT); CIN >> M >> N。 FOR(I、1、m)と { int型、B、C; CIN >> A >> B >> C。 (A、B、C)を加えます。 (B、C)を追加します。 } ダイクストラ()。 COUT << D [ 1 ] << ENDL。 // (I、1、N)についての // { // COUT << D [i]は<< ENDL。 // } }