7-35 城市間緊急救援(25 分)
作為乙個城市的應急救援隊伍的負責人,你有一張特殊的全國地圖。在地圖上顯示有多個分散的城市和一些連線城市的快速道路。每個城市的救援隊數量和每一條連線兩個城市的快速道路長度都標在地圖上。當其他城市有緊急求助**給你的時候,你的任務是帶領你的救援隊盡快趕往事發地,同時,一路上召集盡可能多的救援隊。
輸入第一行給出4個正整數n、
m、s、
d,其中n(
2≤n≤
500)是城市的個數,順便假設城市的編號為0 ~ (n
−1);
m是快速道路的條數;
s是出發地的城市編號;
d是目的地的城市編號。
第二行給出
n個正整數,其中第
i個數是第
i個城市的救援隊的數目,數字間以空格分隔。隨後的
m行中,每行給出一條快速道路的資訊,分別是:城市1、城市2、快速道路的長度,中間用空格分開,數字均為整數且不超過500。輸入保證救援可行且最優解唯一。
第一行輸出最短路徑的條數和能夠召集的最多的救援隊數量。第二行輸出從s到
d的路徑中經過的城市編號。數字間以空格分隔,輸出結尾不能有多餘空格。
4 5 0 3
20 30 40 10
0 1 1
1 3 2
0 3 3
0 2 2
2 3 2
2 60
0 1 3
我的**:
#include#includeusing namespace std;
int n,m,s,e,per[501],vis[501],cost[501][501];
int x,y,dist,dis[501],f[501],i,j,fper[501],cnt[501];
void min(int s)
else if(vis[j]==0 && cost[s][j]==cost[s][k]+cost[k][j])}}
} }}int main()
for(i=0;i>x>>y>>dist;
cost[x][y]=cost[y][x]=dist;
} min(s);
coutss.push(e);
while(f[e]!=0)
cout
return 0;
}
7 1 城市間緊急救援 (25 分)
作為乙個城市的應急救援隊伍的負責人,你有一張特殊的全國地圖。在地圖上顯示有多個分散的城市和一些連線城市的快速道路。每個城市的救援隊數量和每一條連線兩個城市的快速道路長度都標在地圖上。當其他城市有緊急求助 給你的時候,你的任務是帶領你的救援隊盡快趕往事發地,同時,一路上召集盡可能多的救援隊。輸入第一行...
7 2 城市間緊急救援 25 分
作為乙個城市的應急救援隊伍的負責人,你有一張特殊的全國地圖。在地圖上顯示有多個分散的城市和一些連線城市的快速道路。每個城市的救援隊數量和每一條連線兩個城市的快速道路長度都標在地圖上。當其他城市有緊急求助 給你的時候,你的任務是帶領你的救援隊盡快趕往事發地,同時,一路上召集盡可能多的救援隊。輸入格式 ...
7 3 城市間緊急救援 (25 分)
7 3 城市間緊急救援 25 分 作為乙個城市的應急救援隊伍的負責人,你有一張特殊的全國地圖。在地圖上顯示有多個分散的城市和一些連線城市的快速道路。每個城市的救援隊數量和每一條連線兩個城市的快速道路長度都標在地圖上。當其他城市有緊急求助 給你的時候,你的任務是帶領你的救援隊盡快趕往事發地,同時,一路...