?
本题大意:
输入n,m,s,代表标号为1--n,有m组数据,终点为s。每组数据输入两个点及权值。然后输入w,代表有w个起点,然后输入各起点。求起点到终点的最短时间。
解题思路:
本题也是最短路径问题。有多个起点,本题也是与hdu 一个人的旅行 采取相同的方法。另外选取一个点,将各起点据此点的距离记为0,并以此点最为起点。
具体请参考代码:
#include
#include
#define INF 0x3f3f3f3f int map[1010][1010]; int dis[1010]; int mark[1010]; int n; void dijkstra()//dijkstra算法 { memset(mark,0,sizeof(mark)); for(int i=1;i<=n;i++) dis[i]=INF; dis[0]=0; for(int i=0;i<=n;i++) { int vir,min=INF; for(int j=0;j<=n;j++) if(!mark[j]&&dis[j]
dis[vir]+map[vir][j]) dis[j]=dis[vir]+map[vir][j]; } } int main() { int m,s,w,begin; while(scanf(%d%d%d,&n,&m,&s)!=EOF) { for(int i=0;i<1010;i++) for(int j=0;j<1010;j++) map[i][j]=INF; for(int i=0;i
t) map[p][q]=t; } scanf(%d,&w); for(int i=0;i
?
?