計蒜客 熱愛工作的蒜蒜(最短路)

2021-08-09 19:32:42 字數 2625 閱讀 2007

題目鏈結

time limit:1000ms memory limit:262144k

眾所周知,蒜蒜是一名熱愛工作的好員工,他覺得時間就是金錢,做事情總是爭分奪秒。

這天晚上,蒜蒜乙個人去吃晚飯。不巧的是,吃完飯以後就開始下雨了,蒜蒜並沒有帶雨傘出來。但是蒜蒜熱愛工作,工作使他快樂,他要盡快趕回去寫**。

蒜蒜的公司在中關村,中關村這邊地形複雜,有很多天橋、地下通道和馬路交錯在一起。其中,地下通道是可以避雨的,天橋和馬路都沒辦法避。可以把中關村抽象成為 n 個點的地圖(頂點編號為 1到 n),其中有 m1

條地下通道,有 m2

​​ 條馬路或者天橋,其中地下通道的長度為 1。蒜蒜吃飯的地方在 1 點,公司在 n 點。當然,蒜蒜雖然愛工作心切,但是他更不想淋很多雨,同時也不想浪費很多時間。於是他折中了一下——在保證他回到公司所走的路程總和小於等於 l 的情況下,他希望淋雨的路程和盡量的少。

請你趕緊幫熱愛工作的蒜蒜規劃一條路徑吧,不要再讓他浪費時間。第一

行輸入測

試組數t

(1≤t

≤20)。

接下來t組數

據。

每一組數

據的第一

行輸入四

個整數n

(2≤n

≤100),

m1(0

≤m1≤

50),m

2(0≤

m2≤5000),

l(1≤

l≤108

)。

接下裡m

1行,每

行輸入兩

個整數a

,b(1

≤a,b

≤n),

表示a和

b之間有

一條地下

通道。

接下裡m2行,

每行輸入

三個整數

u,v(

1≤u,

v≤n)

,c(1

≤c≤10

6),表

示u和v

之間有一

條長度為

c的馬路

或者天橋

所有路徑都是雙向的。

對於每組資料,如果有滿足要求的路徑,輸出乙個整數,表示淋雨的路程長度,否則輸出 −1

3

4 2 2 6

1 22 3

1 4 5

3 4 4

4 2 2 5

1 22 3

1 4 5

3 4 4

4 2 2 4

1 22 3

1 4 5

3 4 4

4

5-1

題目要求的是從1~n的一條路徑,滿足總路程<=l且淋雨(地上)路程最短,按照這個思路其實就是求乙個地上路程的最短路,但這條路要滿足總路程<=l的條件。理清思路後,求最短路可以用dijkstra也可用spfa,只要在入隊(加入集合)前判斷一下是否能滿足總路程<=l就可以了。

#include 

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

const

int inf=0x3f3f3f3f;

const

int maxm=11111;

const

int maxn=111;

struct edgenode

;edgenode edges[maxm];

int n,m;

int head[maxn],edge;

bool vis[maxn];

queue

que;

int dis[maxn];//記錄淋雨(地上)的長度

int total[maxn];//記錄總長度

int n,m1,m2,l;

void addedge(int u,int v,int side,int c)

void init()

void spfa(int s,int n)//單源最短路(s為起點,n為節點總數)

memset(vis,0,sizeof(vis));

while (!que.empty()) que.pop();

que.push(s);

vis[s]=true;

dis[s]=0;

total[s]=0;

while (!que.empty())}}

}}int main()

for(int i=0;iint u,v,c;

scanf("%d%d%d",&u,&v,&c);

addedge(u,v,1,c);

addedge(v,u,1,c);

}spfa(1,n);

if(dis[n]==inf)

printf("-1\n");

else

printf("%d\n",dis[n]);

}return

0;}

計蒜客 18018 熱愛工作的蒜蒜 最短路 dp

蒜蒜要從1 n,中間有地下的路和地上的路,地下的路長度都為1,且不會被淋,地上的路長度有權值,問從1 n在距離不超過l的情況下,使得淋雨的路程最少 定義dp i j 表示在走了j條地下的路的情況下從1到i的最短路,然後就是最短路了 只不過push的時候還要記下j的值 31 struct node 3...

計蒜客 熱愛工作的蒜蒜 spfa dfs

眾所周知,蒜蒜是一名熱愛工作的好員工,他覺得時間就是金錢,做事情總是爭分奪秒。這天晚上,蒜蒜乙個人去吃晚飯。不巧的是,吃完飯以後就開始下雨了,蒜蒜並沒有帶雨傘出來。但是蒜蒜熱愛工作,工作使他快樂,他要盡快趕回去寫 蒜蒜的公司在中關村,中關村這邊地形複雜,有很多天橋 地下通道和馬路交錯在一起。其中,地...

熱愛工作的蒜蒜

眾所周知,蒜蒜是一名熱愛工作的好員工,他覺得時間就是金錢,做事情總是爭分奪秒。這天晚上,蒜蒜乙個人去吃晚飯。不巧的是,吃完飯以後就開始下雨了,蒜蒜並沒有帶雨傘出來。但是蒜蒜熱愛工作,工作使他快樂,他要盡快趕回去寫 請你趕緊幫熱愛工作的蒜蒜規劃一條路徑吧,不要再讓他浪費時間。所有路徑都是雙向的。樣例輸...