終於回來了 郵遞員送信

2021-08-03 16:46:30 字數 2115 閱讀 7689

暑假裡很忙,計算機也有好幾次集訓,做了些好題,接下來幾天會分享一下。(post.pas/c/cpp)

【 題目描述】

有乙個郵遞員要送東西, 郵局在節點 1。 他總共要送 n-1 樣東西, 其目的地分別是 2~

n。 由於這個城市的交通比較繁忙, 因此所有的道路都是單行的, 共有 m 條道路, 通過每條

道路需要一定的時間。 這個郵遞員每次只能帶一樣東西。 求送完這 n-1 樣東西並且最終回到

郵局最少需要多少時間。

【 輸入格式】

輸入檔案第一行包含兩個正整數 n 和 m;

接下來 m 行, 每行三個正整數 u、 v、 w, 表示該條道路為從 u 到 v 的, 且通過這條道

路需要 w 的時間。

輸入保證任意兩點都能互相到達。

【 輸出格式】

輸出僅一行, 包含乙個整數, 為最少需要的時間。

【 樣例輸入】

5 10

2 3 5

1 5 5

3 5 6

1 2 8

1 3 8

5 3 4

4 1 8

4 5 3

3 5 6

5 4 2

【 樣例輸出】

83 【 資料規模】

對於 30%的資料: 1≤n≤200;

對於 100%的資料: 1≤n≤1,000; 1≤m≤100,000; 1≤u≠v≤n; 1≤w≤10,000;

本題的難點在於資料範圍。

此題的思路十分簡單,求取每個點到點1的距離和點1到每個點的距離。所以,乍一看就是弗洛伊德。求每個點之間的距離,但是n的範圍是1000。 1000資料無法過n³。

於是只能用dijkstra,spfa等更快的演算法。但是用這些演算法如何求取點i到1的距離呢?此題需要用到反向建圖。

例如此圖,正向spfa可知f[1][2]=4,f[1][3]=15。即dis[2]=4,dis[3]=15

同時我們可以知道,f[2][1]=18,f[3][1]=7。如果將i,j反過來,則是f[1][2]=18,

f[1][3]=7。因此,只要我們反過來,令f[i][j]=f[j][i]。再做一遍spfa,即可

求出n點到1點的距離。

例如此圖,使f[1][3]=f[3][1]=7,f[3][2]=f[2][3]=11。則3至1的距離就等於f[1][3]=7。這樣,就可以求出1為終點的值。

下面是**(很醜很長很silly,高手勿噴)

#include

#include

using namespace std;

int i,j,k,n,m,tot,ans;

int f[1005][1005],dis[1005],u[1005][1005],q[10005],num[10005],q1[1000005],num1[1000005],f1[1005][1005];

intread()

int min(int a,int b)else

for(register int i=1;i<=n;i++) dis[i]=2000000;

for(register int i=1;i<=m;i++)

int head=0,tail=1;q[tail]=1;dis[1]=0;num[tail]=0;

while(headfor(register int i=1;i<=n;i++)}}

for(register int i=1;i<=n;i++) ans+=dis[i];

for(register int i=1;i<=n;i++) dis[i]=2000000;

int h=0,t=1;q1[t]=1;dis[1]=0;num1[t]=0;

while(hfor(register int i=1;i<=n;i++)

郵遞員送信

題目描述 有乙個郵遞員要送東西,郵局在節點1.他總共要送n 1樣東西,其目的地分別是2 n。由於這個城市的交通比較繁忙,因此所有的道路都是單行的,共有m條道路,通過每條道路需要一定的時間。這個郵遞員每次只能帶一樣東西。求送完這n 1樣東西並且最終回到郵局最少需要多少時間。輸入輸出格式 輸入格式 第一...

郵遞員送信(最短路)

郵遞員送信 題目描述 有乙個郵遞員要送東西,郵局在結點1。他總共要送n 1樣東西,其目的地分別是2 n。由於這個城市的交通比較繁忙,因此所有的道路都是單行的,共m條道路,通過每條道路需要一定的時間。這個郵遞員每次只能帶一樣東西。求送完這n 1樣東西並且最終回到郵局最少需要多少時間。輸入檔案 輸入檔案...

Luogu P1629 郵遞員送信

有乙個郵遞員要送東西,郵局在節點1.他總共要送n 1樣東西,其目的地分別是2 n。由於這個城市的交通比較繁忙,因此所有的道路都是單行的,共有m條道路,通過每條道路需要一定的時間。這個郵遞員每次只能帶一樣東西。求送完這n 1樣東西並且最終回到郵局最少需要多少時間。輸入格式 第一行包括兩個整數n和m。第...