l2-001 緊急救援 (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
解析:
直接按題目要求,沒什麼難點
ac:
#include#define inf 0x3f3f3f
#define maxn 505
using namespace std;
struct node
;vectordc[maxn];
int n,m,s,d;
int cc[maxn];
int mp[maxn][maxn];
int vis[maxn];
int mm[maxn],stepp[maxn];
int dd,maxs,ans,sign;//最大距離,最多人,路徑數目,最多人的過點數
void dfs(int x,int step,int dis,int gc)//位置點,步數,走過的距離,帶的人
); dc[a].push_back();}}
dd=dij();
sign=0;
ans=0;
maxs=0;
dfs(s,0,0,0);
printf("%d %d\n",ans,maxs+cc[s]);
printf("%d",s);
for(int i=0;iprintf(" %d",stepp[i]);
printf("\n");
return 0;
}
L2 001 緊急救援(最短路)
題目鏈結 找出最短路中人數和最大的一條,輸出對應路徑,並求出最短路個數。一題最短路的處理題,在最短路模板上加上人口的數量和路徑數的處理。具體看 更新點的部分。include include include include include include using namespace std con...
L2 001 緊急救援 最短路
時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越作為乙個城市的應急救援隊伍的負責人,你有一張特殊的全國地圖。在地圖上顯示有多個分散的城市和一些連線城市的快速道路。每個城市的救援隊數量和每一條連線兩個城市的快速道路長度都標在地圖上。當...
L2 001 緊急救援 最短路
題意 作為乙個城市的應急救援隊伍的負責人,你有一張特殊的全國地圖。在地圖上顯示有多個分散的城市和一些連線城市的快速道路。每個城市的救援隊數量和每一條連線兩個城市的快速道路長度都標在地圖上。當其他城市有緊急求助 給你的時候,你的任務是帶領你的救援隊盡快趕往事發地,同時,一路上召集盡可能多的救援隊。輸入...