傳送門
解題思路
又是一道語文題,弄清楚題意之後其實就能想出來了,從1跑一遍最短路,把$dis[n]$加入答案。在建個反圖跑一遍最短路,把$dis[n]_$加入最短路就行了。第一遍是去的時候,第二遍是回的時候。
#include#includeview code#include
#include
#include
using
namespace
std;
const
int maxn = 1000005
;typedef
long
long
ll;inline
intrd()
while(isdigit(ch))
return f?x:-x;
}int
n,m,head[maxn],cnt;
intto[maxn],nxt[maxn],val[maxn];
inthead_[maxn],cnt_,val_[maxn],nxt_[maxn],to_[maxn];
ll dis[maxn],ans;
bool
vis[maxn];
struct
node
};priority_queue
q;inline
void add(int bg,int ed,int
w)inline
void add_(int bg,int ed,int
w)void
dijkstra()
}for(register int i=2;i<=n;i++) ans+=dis[i];
}void
dijkstra_()
}for(register int i=2;i<=n;i++) ans+=dis[i];
}int
main()
dijkstra(),dijkstra_();cout
<
return0;
}
1342 例4 1 最短路徑問題
題目描述 平面上有n個點 n 100 每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點間的直線距離。現在的任務是找出從一點到另一點之間的最短路徑。輸入 共n m 3行,其中 第一行為整數n。第2行到第n 1...
刷題 最短路 luogu P2384 最短路
給定n個點的帶權有向圖,求從1到n的路徑中邊權之積最小的簡單路徑。來自題解 首先考慮暴力維護,顯然極端資料就會炸裂,那麼用什麼來維護呢?由於log n m log n log m ok,這道題到此結束 我們只要把乘積轉化為對數,最後再還原就可以了,因為精度要求,所以還是記錄路徑好些。include ...
luogu P1144 最短路計數
給出乙個n個頂點m條邊的無向無權圖,頂點編號為1 n。問從頂點1開始,到其他每個點的最短路有幾條。輸入格式 輸入第一行包含2個正整數n,m,為圖的頂點數與邊數。接下來m行,每行兩個正整數x,y,表示有一條頂點x連向頂點y的邊,請注意可能有自環與重邊。輸出格式 輸出包括n行,每行乙個非負整數,第i行輸...