其實就是最短路模板題。該圖為單源帶權無向圖最短路(注意是無向圖,一開始沒考慮到這個吃了虧)。表面上看是多個草兒家相連的城市(多源)到某個城市之間的最短路,但其實我們只要將草兒家編號定為0,將相連的城市和草兒家連起來並將權值設為0即可。
dijkstra版:
#include
#include
#include
using
namespace std;
int mp[
1010][
1010];
int dis[
1010];
bool vis[
1010];
int t, s, d;
struct node};
void
dijkstra
(int s));
while
(!q.
empty()
));}
}}}int
main()
while
(s--
)dijkstra(0
);while
(d--
)printf
("%d\n"
,ans);}
return0;
}
spfa版
#include
#include
#include
#include
#define max 10010
using
namespace std;
struct edge
;int n = max;
//節點數
long
long d[max]
;//最短路距離
bool vis[max]
;//判斷節點是否在佇列中
int s[max]
;//起點集合
int d[max]
;//終點集合
int cnt[max]
;//判斷負環
bool
spfa
(vector g,
int s)}}
}return
true;}
intmain()
for(
int i =
0;i < ids;i++
)scanf
("%d"
,&s[i]);
for(
int i =
0;i < idd;i++
)scanf
("%d"
,&d[i]);
for(
int i =
0;i < ids;i++)}
printf
("%d\n"
,ans);}
return0;
}
HDU 2066 一 個人的旅行 最短路)
乙個人的旅行 time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status practice hdu 2066 description input 輸入資料有多組,每組的第一行是三個整數t,s和d,表示有t條...
最短路 HDU2066 乙個人的旅行
description input 輸入資料有多組,每組的第一行是三個整數t,s和d,表示有t條路,和草兒家相鄰的城市的有s個,草兒想去的地方有d個 接著有t行,每行有三個整數a,b,time,表示a,b城市之間的車程是time小時 1 接著的第t 1行有s個數,表示和草兒家相連的城市 接著的第t ...
hdu2066 乙個人的旅行(最短路)
problem description input 輸入資料有多組,每組的第一行是三個整數t,s和d,表示有t條路,和草兒家相鄰的城市的有s個,草兒想去的地方有d個 接著有t行,每行有三個整數a,b,time,表示a,b城市之間的車程是time小時 1 a,b 1000 a,b 之間可能有多條路 接...