題目鏈結
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
眾所周知,蒜蒜是一名熱愛工作的好員工,他覺得時間就是金錢,做事情總是爭分奪秒。這天晚上,蒜蒜乙個人去吃晚飯。不巧的是,吃完飯以後就開始下雨了,蒜蒜並沒有帶雨傘出來。但是蒜蒜熱愛工作,工作使他快樂,他要盡快趕回去寫 蒜蒜的公司在中關村,中關村這邊地形複雜,有很多天橋 地下通道和馬路交錯在一起。其中,地...
熱愛工作的蒜蒜
眾所周知,蒜蒜是一名熱愛工作的好員工,他覺得時間就是金錢,做事情總是爭分奪秒。這天晚上,蒜蒜乙個人去吃晚飯。不巧的是,吃完飯以後就開始下雨了,蒜蒜並沒有帶雨傘出來。但是蒜蒜熱愛工作,工作使他快樂,他要盡快趕回去寫 請你趕緊幫熱愛工作的蒜蒜規劃一條路徑吧,不要再讓他浪費時間。所有路徑都是雙向的。樣例輸...