洛谷 P1342 請柬

2022-04-10 16:52:46 字數 2217 閱讀 6683

在電視時代,沒有多少人**戲劇表演。malidinesia古董喜劇演員意識到這一事實,他們想宣傳劇院,尤其是古色古香的喜劇片。他們已經列印請帖和所有必要的資訊和計畫。許多學生被雇來分發這些請柬。每個學生志願者被指定乙個確切的公共汽車站,他或她將留在那裡一整天,邀請人們參與。

這裡的公交系統是非常特殊的:所有的線路都是單向的,連線兩個站點。公共汽車離開起始點,到達目的地之後又空車返回起始點。學生每天早上從總部出發,乘公交車到乙個預定的站點邀請乘客。每個站點都被安排了一名學生。在一天結束的時候,所有的學生都回到總部。現在需要知道的是,學生所需的公交費用的總和最小是多少。

輸入格式:

第1行有兩個整數n、m(1<=n,m<=1000000),n是站點的個數,m是線路的個數。

然後有m行,每行描述乙個線路,包括3個整數,起始點,目的地和**。

總部在第1個站點,價錢都是整數,且小於1000000000。

輸出格式:

輸出一行,表示最小費用。

輸入樣例#1:

4 6

1 2 10

2 1 60

1 3 20

3 4 10

2 4 5

4 1 50

輸出樣例#1:

210

【注意】

此題資料規模較大,需要使用較為高效的演算法,此題不設小規模資料分數。

思路:正反個建圖建一次,跑兩邊spfa,所得dis值相加即為答案。

錯因:多定義了三個long long陣列。

ac**:

#include#include

#include

#include

#include

#define maxn 1000010

using

namespace

std;

intn,m,tot,tot1;

intvis[maxn],dis[maxn];

intto[maxn],cap[maxn],net[maxn],head[maxn];

intto1[maxn],cap1[maxn],net1[maxn],head1[maxn];

long

long

ans;

void add(int u,int v,long

long

w)void spfa(int

s) }

}

}}void spfa1(int

s) }

}

}}int

main()

spfa(1);

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

spfa1(1);

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

printf(

"%lld

",ans);

}

tle**:

#include#include

#include

#include

#include

#define maxn 1000010

using

namespace

std;

intn,m,tot,tot1;

intvis[maxn];

intto[maxn],net[maxn],head[maxn];

intto1[maxn],net1[maxn],head1[maxn];

long

long

dis[maxn],cap1[maxn],cap[maxn],ans;

void add(int u,int v,long

long

w)void spfa(int

s) }

}

}}void spfa1(int

s) }

}

}}int

main()

spfa(1);

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

spfa1(1);

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

printf(

"%lld

",ans);

}

洛谷 P1342 請柬

這道題很適合作為p1629的加強版 因為這道題其實體現了反向建圖的高效性 反向建圖後 單終點最短路徑 單源最短路徑。因此兩邊dij,然後再累計和即可 部分不難弄。直接上 先說明以下程式,有1的變數名與第一次dij有關 學生出來 帶2的與第二次dij有關 學生回家 include include in...

洛谷P1342請柬

核心思想 兩遍最短路.1號點去各地的時間直接套最短路模板,各地到1號點時間用逆向思維,視為求1號點沿反邊到各地的時間即可.include include include include include define re register using namespace std const int ...

洛谷P1342 請柬解題報告

求去的路徑與回來的路徑和 1 n m 1000000 1 le n,m le 1000000 1 n,m 1000 000最短路 對於第一次碰到這種模型的oiers,這個地方可以講講的。顯然我們可以暴力跑n遍最短路。但是我們可以這麼想 我們出去是從乙個點到所有其他點,那麼我們能回來也從乙個點到所有其...