作為乙個城市的應急救援隊伍的負責人,你有一張特殊的全國地圖。在地圖上顯示有多個分散的城市和一些連線城市的快速道路。每個城市的救援隊數量和每一條連線兩個城市的快速道路長度都標在地圖上。當其他城市有緊急求助**給你的時候,你的任務是帶領你的救援隊盡快趕往事發地,同時,一路上召集盡可能多的救援隊。
input
輸入第一行給出4個正整數n、m、s、d,其中n(2)是城市的個數,順便假設城市的編號為0 ~ (;m是快速道路的條數;s是出發地的城市編號;d是目的地的城市編號。
第二行給出n個正整數,其中第i個數是第i個城市的救援隊的數目,數字間以空格分隔。隨後的m行中,每行給出一條快速道路的資訊,分別是:城市1、城市2、快速道路的長度,中間用空格分開,數字均為整數且不超過500。輸入保證救援可行且最優解唯一。
output
第一行輸出最短路徑的條數和能夠召集的最多的救援隊數量。第二行輸出從s到d的路徑中經過的城市編號。數字間以空格分隔,輸出結尾不能有多餘空格。
input
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
跟最短路計數一樣。用的是dijkstra。
乙個計數,如果新路徑,就相等。相同的最短路就相加。
乙個最多數目。如果新路經就相加。相同的就更新最大值。並且更新字首點。
求路徑就是記錄乙個字首點。
1 #include2 #include3 #includeview code4 #include5 #include6 #include
7 #include8 #include9 #include10
//#include
11using
namespace
std;
12 typedef long
long
ll;13
const
int inf=0x7fffffff;14
const
int n=1001;15
const
int m=9999999;16
const ll mod=1000000000+7;17
int n,m,s,d,len=0;18
intlink[n],dis[n],con[n],num[n],val[n],pre[n],bok[n];
19int ans[n],cnt=0;20
struct
node
21e[m];
24void insert(int xx,int yy,int
vv)25
31void
init()
3240
for(int i=1;i<=m;i++)
4147 dis[s]=0
;48 bok[s]=1
;49 con[s]=1;50
for(int i=link[s];i;i=e[i].next)
51
54for(int i=1;i)
5563 bok[u]=1;64
//cout<65
for(int j=link[u];j;j=e[j].next)
6674
else
if(dis[e[j].y]==dis[u]+e[j].v)
7582}83
}84//cout<8586}
8788}89
intmain()
90
等會有spfa寫一下qaq
錯了乙個資料的spfa()
1 #include2 #include3 #includeview code4 #include5 #include6 #include
7 #include8 #include9 #include10
//#include
11using
namespace
std;
12 typedef long
long
ll;13
const
int inf=0x7fffffff;14
const
int n=1001;15
const
int m=9999999;16
const ll mod=1000000000+7;17
int n,m,s,d,len=0;18
intlink[n],dis[n],con[n],num[n],val[n],pre[n],bok[n];
19int que[m+100
];20
int ans[n],cnt=0;21
struct
node
22e[m];
25void insert(int xx,int yy,int
vv)26
32void
init()
3341
for(int i=1;i<=m;i++)
4248 dis[s]=0
;49 bok[s]=1
;50 con[s]=1;51
for(int i=link[s];i;i=e[i].next)
5256
int head=1,tail=2
;57 que[1]=s;
58while(head
5976}77
else
if(dis[e[i].y]==dis[tt]+e[i].v)
7885}86
}87 head++;88}
89}90int
main()
91
L2 001 緊急救援 (25 分)
作為乙個城市的應急救援隊伍的負責人,你有一張特殊的全國地圖。在地圖上顯示有多個分散的城市和一些連線城市的快速道路。每個城市的救援隊數量和每一條連線兩個城市的快速道路長度都標在地圖上。當其他城市有緊急求助 給你的時候,你的任務是帶領你的救援隊盡快趕往事發地,同時,一路上召集盡可能多的救援隊。輸入第一行...
L2 001 緊急救援 (25 分
l2 001 緊急救援 25 分 作為乙個城市的應急救援隊伍的負責人,你有一張特殊的全國地圖。在地圖上顯示有多個分散的城市和一些連線城市的快速道路。每個城市的救援隊數量和每一條連線兩個城市的快速道路長度都標在地圖上。當其他城市有緊急求助 給你的時候,你的任務是帶領你的救援隊盡快趕往事發地,同時,一路...
L2 001 緊急救援 (25 分
最短路因為還要求最短路徑的個數和最大救援人數 對於每個節點和每個節點的前乙個節點,理想的方法是和藍橋杯第五題一樣,結構體裡增加三個記錄資訊,這道題就是要增加乙個最短路徑的個數和當前最大救援隊數的資訊和每個節點的前乙個節點。但我們存圖的方式不是存點,而是存邊,所以只能額外開乙個陣列tot,記錄起始點到...