hdu 2066

??.(790684394) 17:34:42
#include <stdio.h>
#define N 2000
#define INF 100000000
int g[N][N],bz[N],dist[N],s,t,n,z;
void Dijkstra(int s)
{
int i,j,min,k,x;
for (i=1;i<=n;i++)
{ dist[i]=g[s][i]; bz[i]=0; }
bz[s]=1;
for (i=1;i<n;i++)
{
j=s;
min=INF;
for (k=1;k<=n;k++)
if ( dist[k]<min && bz[k]==0 ) { min=dist[k]; j=k; }
bz[j]=1;
for (k=1;k<=n;k++)
if ( min+g[j][k]<dist[k] && bz[k]==0) dist[k]=min+g[j][k];
}
}
int main()
{ int i,j,x,y,m,k,d,q[1500],h,p[1500],zu,kx;
while (scanf("%d%d%d",&n,&m,&t)!=EOF)
{
for(i=1;i<=1000;i++)
for(k=1;k<=1000;k++)
if(i==k) g[i][k]=0; else g[i][k]=INF;
kx=0;
for (i=1;i<=n;i++)
{
scanf("%d%d%d",&x,&y,&z);
if(z<g[x][y])
{
g[x][y]=z; g[y][x]=z;
if(x>kx) kx=x;
if(y>kx) kx=y;
}
}
n=kx;
for(i=1;i<=m;i++)
scanf("%d",&q[i]);
zu=INF;
for(i=1;i<=t;i++) scanf("%d",&p[i]);
for(i=1;i<=m;i++)
{
Dijkstra(q[i]);
for(k=1;k<=t;k++) if(dist[p[k]]<zu) {zu=dist[p[k]]; }
}
printf("%d\n",zu);
}
}

77<[email protected]> 17:35:51
#include <iostream>
#include <string>
using namespace std;
int a[1020][1020];
int dis[1020],dis1[1020],bz[1020],T,S,D,st,ed,m;
int init()
{
int s,e,d,i;
m=0;
for(i=1;i<=T;i++)

{
cin>>s>>e>>d;
if(d<a[s][e]||d<a[e][s]) a[s][e]=a[e][s]=d;
if(m<s) m=s;
if(m<e) m=e;

}

}
int DIST()
{ int i,j,MIN,wz;
bz[st]=1;
for(i=1;i<=m;i++) dis[i]=a[st][i];

dis[st]=0;

for(j=1;j<=m;j++) //i<m-1?i<m
{
MIN=1<<20;
for(i=1;i<=m;i++)
if(dis[i]<MIN&&!bz[i]) MIN=dis[i],wz=i;

bz[wz]=1;

for(i=1;i<=m;i++)
if(MIN+a[wz][i]<dis[i]&&!bz[i]) dis[i]=MIN+a[wz][i];
}

}
int main()
{ int i,j,best,bestcity;
while(cin>>T>>S>>D)
{ best=1<<20;
memset(a,1,sizeof(a));
memset(dis1,1,sizeof(dis1));
init();
for(i=0;i<S;i++)
{ memset(bz,0,sizeof(bz));
cin>>st;
if(st>m||st<1) continue;
DIST();
for(j=1;j<=m;j++)
if(dis[j]<dis1[j]) dis1[j]=dis[j];
}

for(i=0;i<D;i++)
{
cin>>ed;
if(dis1[ed]<best) best=dis1[ed];
}

cout<<best<<endl;

}

}

hdu 2066,布布扣,bubuko.com

时间: 2024-10-29 03:38:01

hdu 2066的相关文章

hdu 2066 一个人的旅行 最短路径

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 18399    Accepted Submission(s): 6394 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰

hdu 2066 一个人的旅行(裸dijkstra)

http://acm.hdu.edu.cn/showproblem.php?pid=2066 求多源多汇的最短路,n最大为1000,floyd三重循环会超时.继续dijkstra吧. #include <stdio.h> #include <algorithm> #include <set> #include <map> #include <vector> #include <math.h> #include <string.h

hdu 2066 一个人的旅行 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题目意思:给出T条路,和草儿家相邻的城市编号,以及草儿想去的地方的编号.问从草儿家到达草儿想去的地方的最短时间是多少. 一开始自己写的只能处理单边出发的情况,对于以下这幅图,只能处理箭头所示的方向,不能向下,于是不知道为什么出现了百年难得一遇的Runtime Error(ACCESS_VIOLATION)! 10 2 31 3 53 8 42 5 25 8 31 4 74 9 129 10 2

HDU 2066 一个人的旅行(Dijstra)

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 18671    Accepted Submission(s): 6505 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰

hdu 2066 一个人的旅行(Dijkstra)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景--草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女--眼看寒假就快到了,这么一大段

hdu 2066 一个人的旅行 Dijkstra

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题意分析:以草儿家为原点,给出城市间相互抵达的时间,给出草儿想去的城市,求最短时间.典型的单源最短路问题,直接用Dijkstra即可,无需优化也可.需要注意的地方是:直接和草儿家相连的城市,时间可以算为0. 另外,题目强调可以有多条路径,所以要注意选取其中最短的一条. /*一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 3

HDU 2066 一个人的旅行(SPFA +Floyd-Warshall算法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 24385    Accepted Submission(s): 8460 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里

HDU 2066 一个人的旅行(最短路)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题面: 一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 22263    Accepted Submission(s): 7720 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会

HDU 2066 一个人的旅行(dijkstra水题+判重边)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题目大意:输入数据有多组,每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个,草儿想去的地方有D个:接着有T行,每行有三个整数a,b,time,表示a,b城市之间的车程是time小时:(1=<(a,b)<=1000;a,b 之间可能有多条路)接着的第T+1行有S个数,表示和草儿家相连的城市:接着的第T+2行有D个数,表示草儿想去地方. 输出草儿能去某个喜欢的城市的最短