眾所周知,蒜蒜是一名熱愛工作的好員工,他覺得時間就是金錢,做事情總是爭分奪秒。
這天晚上,蒜蒜乙個人去吃晚飯。不巧的是,吃完飯以後就開始下雨了,蒜蒜並沒有帶雨傘出來。但是蒜蒜熱愛工作,工作使他快樂,他要盡快趕回去寫**。
蒜蒜的公司在中關村,中關村這邊地形複雜,有很多天橋、地下通道和馬路交錯在一起。其中,地下通道是可以避雨的,天橋和馬路都沒辦法避。可以把中關村抽象成為 nn
n 個點的地圖(頂點編號為 11
1 到 nn
n),其中有 m1m_1m
1 條地下通道,有 m2m_2m
2 條馬路或者天橋,其中地下通道的長度為 11
1。蒜蒜吃飯的地方在 11
1 點,公司在 nn
n 點。當然,蒜蒜雖然愛工作心切,但是他更不想淋很多雨,同時也不想浪費很多時間。於是他折中了一下——在保證他回到公司所走的路程總和小於等於 ll
l 的情況下,他希望淋雨的路程和盡量的少。
請你趕緊幫熱愛工作的蒜蒜規劃一條路徑吧,不要再讓他浪費時間。
第一行輸入測試組數 t(1≤t≤20)t(1 \le t \le 20)t(
1≤t≤
20)。
接下來 tt
t 組資料。
每一組資料的第一行輸入四個整數 n(2≤n≤100)n(2 \le n \le 100)n(
2≤n≤
100)
,m1(0≤m1≤50)m_1(0 \le m_1 \le 50)m
1(
0≤m
1≤
50),m2(0≤m2≤5000)m_2(0 \le m_2 \le 5000)m
2(
0≤m
2≤
5000
),l(1≤l≤108)l(1 \le l \le 10^8)l(
1≤l≤
108
)。
接下裡 m1m_1m
1 行,每行輸入兩個整數 a,b(1≤a,b≤n)a, b(1 \le a, b \le n)a,
b(1≤
a,b≤
n),表示 aa
a 和 bb
b 之間有一條地下通道。
接下裡 m2m_2m
2 行,每行輸入三個整數 u,v(1≤u,v≤n),c(1≤c≤106)u, v(1 \le u, v \le n), c(1 \le c \le 10^6)u,
v(1≤
u,v≤
n),c
(1≤c
≤10
6)
,表示 uu
u 和 vv
v 之間有一條長度為 cc
c 的馬路或者天橋。
所有路徑都是雙向的。
對於每組資料,如果有滿足要求的路徑,輸出乙個整數,表示淋雨的路程長度,否則輸出 −1-1−1
。樣例輸入
34 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
樣例輸出
45-1
題目**
景馳無人駕駛 1024 程式設計邀請賽
此題wa和tlen次,參考大牛部落格
解: 先求出從n到每乙個點的最短距離,再對1點進行dfs;
dfs時:①如果從1點當前點的最小淋雨量加上從這點到相鄰的下乙個點的淋雨量小於從1點下乙個點的淋雨量,則更新下乙個點的最小淋雨量;否則return
②如果從1點到當前點的距離加上與相鄰的下乙個點的距離,再加上下乙個點到n點的最短距離小於限制距離,則繼續dfs;否則停止這一條路徑的dfs;
#include #include #include #include using namespace std;
const int inf=0x3f3f3f3f;;
const int maxx=1e3+100;;
const int maxn=2e6+10;
typedef long long ll;
int m1,m2,n,q,l;
int dis[maxx],dis2[maxx];
int sto[maxx];
int pre[maxx];
int head[2*maxn];
bool vis[maxx],vis2[maxx],vis3[maxx];
int nu[maxx],flag;
struct point;
point pt[2*maxn];
void add(int u,int v,int val)
void spfa(int st)
}return 0;
}
計蒜客 熱愛工作的蒜蒜(最短路)
題目鏈結 time limit 1000ms memory limit 262144k 眾所周知,蒜蒜是一名熱愛工作的好員工,他覺得時間就是金錢,做事情總是爭分奪秒。這天晚上,蒜蒜乙個人去吃晚飯。不巧的是,吃完飯以後就開始下雨了,蒜蒜並沒有帶雨傘出來。但是蒜蒜熱愛工作,工作使他快樂,他要盡快趕回去寫...
熱愛工作的蒜蒜
眾所周知,蒜蒜是一名熱愛工作的好員工,他覺得時間就是金錢,做事情總是爭分奪秒。這天晚上,蒜蒜乙個人去吃晚飯。不巧的是,吃完飯以後就開始下雨了,蒜蒜並沒有帶雨傘出來。但是蒜蒜熱愛工作,工作使他快樂,他要盡快趕回去寫 請你趕緊幫熱愛工作的蒜蒜規劃一條路徑吧,不要再讓他浪費時間。所有路徑都是雙向的。樣例輸...
計蒜客 18018 熱愛工作的蒜蒜 最短路 dp
蒜蒜要從1 n,中間有地下的路和地上的路,地下的路長度都為1,且不會被淋,地上的路長度有權值,問從1 n在距離不超過l的情況下,使得淋雨的路程最少 定義dp i j 表示在走了j條地下的路的情況下從1到i的最短路,然後就是最短路了 只不過push的時候還要記下j的值 31 struct node 3...