[HDU 2066] 多个最短路比较大小
来源:互联网 发布:linux 格式化硬盘 编辑:程序博客网 时间:2024/06/05 12:07
把小草家到中转站的距离看为0 ; 然后从家里开始最短路就行了 ;
然后比较想去的点的最短路径输出最小的;
#include <bits/stdc++.h>#define inf 9999999using namespace std ;int v , u , n , dis[2000] , ma[2000][2000] , vis[2000] , sa[2000] ; int s , t , d ;void init();//*初始化 void input();//*读入t组数据存图 void clear();//*读入s组数据代表路 void inin();//*读入d组数据代表想去的 void dijk();//*求最短路 void maxn();//*比较可以去的地方的所有最短路 int main(){while(scanf("%d%d%d",&t,&s,&d)!=EOF){init();input();clear();inin();dijk();maxn();}return 0 ;}void init(){memset(vis,0,sizeof(vis));memset(sa,0,sizeof(sa));for(int i = 0 ; i<=1500;i++){for(int j = 0 ; j <=1500 ; j++){ma[i][j] = inf ;}dis[i] = inf ;ma[i][i] = 0 ;}}void input(){n = 0 ;for(int i = 0 ; i < t ; i++){int a , b , c ;scanf("%d%d%d",&a,&b,&c);n = max(n,max(a,b));if(ma[a][b] > c){ma[a][b] = ma[b][a] = c ;}}}void clear(){for(int i = 0 ; i < s ; i++){int m ;scanf("%d",&m);ma[0][m] = ma[m][0] = 0 ;}}void inin(){for(int i = 0 ; i < d ;i++){scanf("%d",&sa[i]);}}void dijk(){vis[0] = 1 ;for(int i = 0 ; i <=n ; i++){dis[i] = ma[0][i] ;}int mini , k ;for(int i = 1 ; i<=n ;i++){mini = inf ;for(int j = 1 ;j<=n;j++){if(!vis[j]&&dis[j] < mini){mini = dis[j] ;k = j ;}}vis[k] = 1;for(int j = 1 ;j<=n;j++){if(!vis[j]&&dis[j] > dis[k] + ma[k][j]){dis[j] = dis[k] + ma[k][j] ;}}}}void maxn(){int maxi = inf ;for(int i = 0 ; i < d ; i++){maxi = min(maxi , dis[sa[i]]);}cout<<maxi<<endl;}
0 0
- [HDU 2066] 多个最短路比较大小
- hdu 2066 最短路
- HDU 2066 多源最短路
- HDU 2066 最短路
- HDU 2066 最短路
- hdu shortest path 快速矩阵比较 + 最短路
- 比较大小
- 比较大小
- 比较大小
- 比较大小
- 比较大小
- 比较大小
- 比较大小
- 比较大小
- 比较大小
- 比较大小
- 比较大小
- 比较大小
- POJ_3352_Road Construction_割点_割边
- C++对象内存模型
- mysql :=和=的区别
- openGL 五角星
- 安装Erlang和Eclipse下的Erlide(Windows)
- [HDU 2066] 多个最短路比较大小
- Tomcat服务器+MySQL数据库+MyBatis持久层框架的简单使用
- 用NginX+keepalived实现高可用的负载均衡
- uefi制作启动盘
- 文件的分割与合并
- (MVP+RxJava+Retrofit)解耦+Mockito单元测试 经验分享
- springMVC搭建总结
- Android自定义视图动画(一)
- Opencv3.1使用教程(一)ubuntu 14.04 安装Opencv3.1.0 (包含opencv_contrib模块)