HDU2066-一个人的旅行-最短路(dijkstra)

【HDU2066-一个人的旅行-最短路(dijkstra)】题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066
这里有多个起点和终点,所以需要转换一下,将小草的位置定位0,小草到起点的距离为0,最后遍历一下到各个终点的最小距离就可以;

#include #include #include #include #include #include #include #include #include #include #include #define LL long long #define inf 1<<29 #define s(a) scanf("%d",&a) #define CL(a,b) memset(a,b,sizeof(a)) using namespace std; const int N=1025; int n,m,a,b,c; int Map[N][N]; bool vis[N]; int dist[N]; int e[N]; int T,S,D; void dijkstra() { CL(vis,false); for(int i=0; i<=n; i++) dist[i]=inf; dist[0]=0; //vis[0]=true; while(1){ int v=-1; for(int u=0; u<=n; u++)//选取最短路径; if(!vis[u]&&(v==-1||dist[u]c) Map[a][b]=Map[b][a]=c; } for(int i=1; i<=S; i++){ s(a); Map[0][a]=Map[a][0]=0; } for(int i=0; i



    推荐阅读