description
某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。
現在,已知起點和終點,請你計算出要從起點到終點,最短需要行走多少距離。
input
本題目包含多組資料,請處理到檔案結束。
每組資料第一行包含兩個正整數n和m(0
output
對於每組資料,請在一行裡輸出最短需要行走的距離。如果不存在從s到t的路線,就輸出-1.
sample input
3 30 1 1
0 2 3
1 2 1
0 23 1
0 1 1
1 2
sample output
2-1
//dijkstra演算法
#include
#include
#include
#include
using
namespace std;
#define n 10000
int inf=
99999
;int map[n][n];
int dis[n];
int vis[n];
int n,m;
int s,e;
void
dijkstra
(int n)
vis[s]=1;
for(
int i=
0;i;i++)
} vis[pos]=1;
for(
int j=
0;jif(dis[e]>=inf)
printf
("-1\n"
);else
printf
("%d\n"
,dis[e]);
}int
main
()for
(int i=
0;iscanf
("%d%d"
,&s,&e);
dijkstra
(n);
}return0;
}
//
floyd演算法
//bellman-ford#include
#include
#include
#include
using
namespace std;
#define n 10000
int inf=
99999
;int map[n][n];
int dis[n];
int vis[n];
int n,m;
int s,e;
void
floyd
()int
main
()for
(int i=
0;iscanf
("%d%d"
,&s,&e);
floyd
();}
return0;
}
//spfa#include
#include
#include
#include
using
namespace std;
#define n 10000
int inf=
99999
;int map[n][n];
int dis[n];
int n,m;
int s,e;
void
bellman
()for
(int i=
0;i;i++)}}
}if(dis[e]!=inf)
printf
("%d\n"
,dis[e]);
else
printf
("-1\n"
);}intmain
()for
(int i=
0;iscanf
("%d%d"
,&s,&e);
bellman
();}
return0;
}
//spfa前相星式
#include
#include
#include
#include
using
namespace std;
const
int n=
10000
;const
int inf=
99999
;int map[n][n];
int dis[n];
int vis[n];
int que[n];
int n,m;
int s,e;
void
spfa
() dis[s]=0;
que[in++]=s;
vis[s]=1;
while
(outvis[p]=0;
}if(dis[e]!=inf)
printf
("%d\n"
,dis[e]);
else
printf
("-1\n"
);}intmain
()for
(int i=
0;iscanf
("%d%d"
,&s,&e);
spfa
();}
return0;
}
#include
"iostream"
#include
"cstdio"
#include
"cstring"
#include
"cstdlib"
using
namespace std;
const
int n=
1000
;const
int inf=
99999
;int dis[n];
int vis[n];
int que[n];
int n,m;
int s,e;
int cnt;
struct
edge
edge[n];
int head[n];
void
init
() cnt=0;
}void
add(
int u,
int v,
int w)
void
spfa()}
}}vis[p]=0
;}if(dis[e]printf
("%d\n"
,dis[e]);
else
printf
("-1\n"
);}intmain
()scanf
("%d%d"
,&s,&e);
spfa
();}
return0;
}
暢通工程續(最短路)
暢通工程續 time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit status description 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,...
暢通工程續 最短路dijkstra
from hdu 1874 time limit 1s memory limit 32mb problem description 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離...
暢通工程續 最短路徑問題
暢通工程續 problem description 某省自從實行了很多年的暢通工程計畫後,終於修建了很多路。不過路多了也不好,每次要從乙個城鎮到另乙個城鎮時,都有許多種道路方案可以選擇,而某些方案要比另一些方案行走的距離要短很多。這讓行人很困擾。現在,已知起點和終點,請你計算出要從起點到終點,最短需...