hdu 2680 最短路径 多起点一终点问题
来源:互联网 发布:mac输入大写字母 编辑:程序博客网 时间:2024/05/21 09:19
Choose the best route
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 30 Accepted Submission(s) : 11
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
One day , Kiki wants to visit one of her friends. As she is liable to carsickness , she wants to arrive at her friend’s home as soon as possible . Now give you a map of the city’s traffic route, and the stations which are near Kiki’s home so that she can take. You may suppose Kiki can change the bus at any station. Please find out the least time Kiki needs to spend. To make it easy, if the city have n bus stations ,the stations will been expressed as an integer 1,2,3…n.
Input
There are several test cases.
Each case begins with three integers n, m and s,(n<1000,m<20000,1=<s<=n) n stands for the number of bus stations in this city and m stands for the number of directed ways between bus stations .(Maybe there are several ways between two bus stations .) s stands for the bus station that near Kiki’s friend’s home.
Then follow m lines ,each line contains three integers p , q , t (0<t<=1000). means from station p to station q there is a way and it will costs t minutes .
Then a line with an integer w(0<w<n), means the number of stations Kiki can take at the beginning. Then follows w integers stands for these stations.
Each case begins with three integers n, m and s,(n<1000,m<20000,1=<s<=n) n stands for the number of bus stations in this city and m stands for the number of directed ways between bus stations .(Maybe there are several ways between two bus stations .) s stands for the bus station that near Kiki’s friend’s home.
Then follow m lines ,each line contains three integers p , q , t (0<t<=1000). means from station p to station q there is a way and it will costs t minutes .
Then a line with an integer w(0<w<n), means the number of stations Kiki can take at the beginning. Then follows w integers stands for these stations.
Output
The output contains one line for each data set : the least time Kiki needs to spend ,if it’s impossible to find such a route ,just output “-1”.
Sample Input
5 8 51 2 21 5 31 3 42 4 72 5 62 3 53 5 14 5 122 34 3 41 2 31 3 42 3 211
Sample Output
1-1
Author
Source
2009浙江大学计算机研考复试(机试部分)——全真模拟
一道题改了好久,但是最终还是第一次代码不正确
//#include<stdio.h>//#include<string.h>//#define MAX 1000000000//int map[1010][1010];//int vis[1010];//int dis[1010];//int n,m,t;//int w;//void dijstra()//{//int i,j;//int min,p;//int temp;//memset(vis,0,sizeof(vis));//for(i=0;i<=n;i++)//{//dis[i]=map[0][i];//}//dis[0]=0;//vis[0]=1;//for(i=0;i<=n;i++)//{//min=MAX;//for(j=0;j<=n;j++)//{//if(!vis[j]&&dis[j]<min)//{//min=dis[j];//temp=j;//}//}//vis[temp]=1;//for(p=0;p<=n;p++)//{//if(dis[p]>dis[temp]+map[temp][p])//{//dis[p]=dis[temp]+map[temp][p];//}//}//}//}//int main()//{//int i,j;//int h,k;//int p,q,t;//while(scanf("%d%d%d",&n,&m,&t)!=EOF)//{//for(i=0;i<=n;i++)//{//for(j=0;j<=n;j++)//{//if(i!=j)//map[i][j]=MAX;//else//map[i][j]=0;//}//}//for(i=0;i<m;i++)//{//scanf("%d%d%d",&p,&q,&t);//if(t<map[p][q])//map[p][q]=t;//}//scanf("%d",&w);//for(i=0;i<w;i++)//{//scanf("%d",&h);//map[0][h]=0;//}//dijstra();//if(dis[n]>=MAX)//printf("-1\n");//else// printf("%d\n",dis[n]);//}//return 0;//} #include<stdio.h>#include<string.h>#define MAX 10000000int map[2010][2010];int vis[1010];int dis[1010];int H[1010];int n,m,s;int w;void dijstra(int begin){int i,j;int min,p;int temp;memset(vis,0,sizeof(vis));for(i=1;i<=n;i++){dis[i]=map[begin][i];}dis[begin]=0;vis[begin]=1;for(i=1;i<=n;i++){min=MAX;for(j=1;j<=n;j++){if(!vis[j]&&dis[j]<min){min=dis[j];temp=j;}}if(min==MAX) break;vis[temp]=1;for(p=1;p<=n;p++){if(!vis[p]&&dis[p]>dis[temp]+map[temp][p]){dis[p]=dis[temp]+map[temp][p];}}}}int main(){int i,j;int h,k;int p,q,t;int Min;while(scanf("%d%d%d",&n,&m,&s)!=EOF){for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(i!=j)map[i][j]=MAX;elsemap[i][j]=0;}}for(i=0;i<m;i++){scanf("%d%d%d",&p,&q,&t);if(t<map[q][p])map[q][p]=t;}scanf("%d",&w);for(i=0;i<w;i++){scanf("%d",&H[i]);}dijstra(s);Min=MAX;for(i=0;i<w;i++){if(Min>dis[H[i]])Min=dis[H[i]];}if(Min==MAX)printf("-1\n");else printf("%d\n",Min);}return 0;}
0 0
- hdu 2680 最短路径 多起点一终点问题
- (阶段三 dijkstra算法温习1.2)HDU 2066 一个人的旅行(使用dijkstra来解决多源起点和多源终点的最短路径问题)
- 迷宫的最短路径(BFS,起点到终点)
- 最短路径:HDU2006-一个人的旅行(多个起点,多个终点)
- (阶段三 dijkstra温习1.3)HDU 1874 畅通工程续(用dijkstra求单源起点和单点终点的最短路径(起点和终点动态给出))
- 5X5迷宫,求起点和终点的最短路径以及最短路径个数(百分数)
- 杭电oj 2544 固定起点终点最短路径解题报告
- 用Java实现Dijkstra输出指定起点到终点的最短路径
- (阶段三 dijkstra算法温习1.5)HDU 2680 Choose the best route(使用dijkstra算法求解多源起点的最短路径问题)
- HDU2066(多原点终点的最短路径)
- 最短路径问题 HDU
- 【最短路径-Dis】hdu 3790 最短路径问题
- HDU 2680 最短路径
- HDU 2066 一个人的旅行【最短路,多起点多终点,Dijkstra算法+spfa算法】
- HDU 2066 一个人的旅行【最短路,多起点多终点,Dijkstra算法+spfa算法】
- HDU 2612 (BFS 两起点到同终点最短时间)
- hdu 3790 最短路径问题
- hdu 3790 最短路径问题
- Storm启动异常[ERROR] Error when processing event,Supervisor启不来
- Spark入门教程
- 风投大师:揭秘创业与融资
- ajaxFileUpload的使用
- 信息可视化与可视化数据挖掘
- hdu 2680 最短路径 多起点一终点问题
- uva 10605 【矿道】状压DP
- 机器学习笔记--回归分析(3)
- GitHub 优秀的 Android 开源项目
- MySQL磁盘空间优化思考
- c语言字符串操作函数
- IE8兼容设置
- Web Application Architectures @Coursera 学习笔记(一)
- 一元多项式求导