hdu 2066 一个人的旅行
来源:互联网 发布:java 动态生成数组 编辑:程序博客网 时间:2024/04/30 04:03
点击打开链接
Dij
#include <stdio.h>#include <string.h>#include <stdlib.h>#define MAX 1007483647 //切记尽量不要超过2147483648/2int map[1200][1200]; //模拟构造个无向图int s[1200]; //存放与草儿家连接的地方int d[1200]; //存放草儿想到的地方int T,S,D,max; ///注意max的作用,记录出现地方的最大值(即,地方的代码1,2,3……)int count[1200]; //存放从某起点到任意终点的时间int flag[1200]; //作变量使用,仅此而已 int dijkstra(int x){ int i,j,k,d_min,d_ans; //d_min 即在此循环中的最小量,作变量使用,d_ans为临时最最小答案 memset(count,0,sizeof(count)); //初始化很重要 memset(flag,0,sizeof(flag)); // for(i=1;i<=max;i++) { count[i] = map[x][i]; flag[i]=0; } count[x]=0; flag[x]=1; for(i=1;i<=max;i++){ d_min=MAX; for(j=1;j<=max;j++){ if(flag[j]==0&&count[j]<d_min){ d_min = count[j]; k=j; } } flag[k]=1; for(j=1;j<=max;j++){ if(flag[j]==0&&count[j]>count[k]+map[k][j]) count[j] = count[k]+map[k][j]; } } d_min=MAX; for(i=1;i<=D;i++){ //// if(count[d[i]]<d_min) d_min=count[d[i]]; } return d_min;} int main(){ int i,j,a,b,time,m_min,m_ans; //// while(scanf("%d%d%d",&T,&S,&D)!=EOF) { m_ans=MAX; max=0; for(i=0;i<1200;i++) for(j=0;j<1200;j++) map[i][j]=MAX; for(i=0;i<T;i++) { scanf("%d%d%d",&a,&b,&time); if(map[a][b]>time) map[a][b]=time; if(map[b][a]>time) map[b][a]=time; if(a>max)max = a; if(b>max)max = b; } for(i=1;i<=S;i++) scanf("%d",&s[i]); for(i=1;i<=D;i++) scanf("%d",&d[i]); for(i=1;i<=S;i++) ///依次从与草儿家相连的地方计算 { m_min=dijkstra(s[i]); if(m_min<m_ans) m_ans=m_min; } printf("%d\n",m_ans); } return 0;}
- HDU 2066 一个人的旅行
- hdu 2066 一个人的旅行
- HDU-2066 一个人的旅行
- Hdu-2066 一个人的旅行
- HDU 2066 一个人的旅行
- HDU 2066 一个人的旅行
- hdu 2066 一个人的旅行
- hdu 2066 一个人的旅行
- hdu 2066 一个人的旅行
- HDU 2066 一个人的旅行
- hdu 2066 一个人的旅行
- HDU 2066 一个人的旅行
- hdu 2066 一个人的旅行
- hdu 2066 一个人的旅行
- HDU 2066 一个人的旅行
- HDU 2066 一个人的旅行
- HDU 2066 一个人的旅行
- hdu 2066(一个人的旅行)
- JVM调优(四):垃圾回收面临的问题
- 图片左右循环连续滚动代码,解决marquee的留白问题
- JavaScript实现checkbox多项选择
- 关于ASP.NET开发的一些专业名称概念
- Android 通过按钮弹出菜单(通过Button显示菜单)
- hdu 2066 一个人的旅行
- javascript之table增加行
- JVM调优(五):分代收集器详述
- java中properties中文乱码问题
- ajax 基本应用-详细介绍
- C#加密算法(转)
- POJ 3253 Fence Repair
- 多下拉框之间传值,左右移,上下移操作
- map和multimap