hdu 2066 最短路水题
题意:给出多个可选择的起始点和终点,求最短路
思路:执行起始点次的spfa即可
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define MAXN 1100
#define MAXM 5000
#define inf 2000000000
struct Edge
{
int to,next;
int time;
}edge[MAXM];
int ans,tot;
int pre[MAXM],head[MAXM],que[MAXM];
int vis[MAXM],dis[MAXM],tar[MAXN];
void addedge(int u,int v,int c)
{
edge[tot].to=v;
edge[tot].next=head[u];
edge[tot].time=c;
head[u]=tot++;
edge[tot].to=u;
edge[tot].next=head[v];
edge[tot].time=c;
head[v]=tot++;
}
void spfa(int s)
{
memset(vis,0,sizeof(vis));
for(int i=0;i<MAXN;i++)
dis[i]=inf;
dis[s]=0;
vis[s]=true;
int front,rear;
front=rear=0;
que[rear++]=s;
while(front!=rear)
{
int pre=que[front++];
vis[pre]=true;
int v;
for(int j=head[pre];j!=-1;j=edge[j].next)
{
v=edge[j].to;
if(dis[v]>dis[pre]+edge[j].time)
{
dis[v]=dis[pre]+edge[j].time;
if(tar[v]==1)
{
if(dis[v]<ans)
ans=dis[v];
}
if(!vis[v])
{
vis[v]=true;
que[rear++]=v;
}
}
}
vis[pre]=false;
}
}
void Init()
{
tot=0;
memset(head,-1,sizeof(head));
}
int si[MAXN];
int main()
{
int T,S,D;
while(scanf("%d%d%d",&T,&S,&D)!=EOF)
{
int a,b,c;
Init();
ans=inf;
for(int i=0;i<T;i++)
{
scanf("%d%d%d",&a,&b,&c);
addedge(a,b,c);
} memset(tar,0,sizeof(tar));
for(int i=0;i<S;i++)
{
scanf("%d",&si[i]);
}
for(int i=0;i<D;i++)
{
scanf("%d",&a);
tar[a]=1;
}
for(int i=0;i<S;i++)
{
spfa(si[i]);
}
printf("%d\n",ans);
}
return 0;
}
hdu 2066 最短路水题的更多相关文章
- hdu 2066 ( 最短路) Floyd & Dijkstra & Spfa
http://acm.hdu.edu.cn/showproblem.php?pid=2066 今天复习了一下最短路和最小生成树,发现居然闹了个大笑话-----我居然一直写的是Floyd,但我自己一直以 ...
- hdu 1106:排序(水题,字符串处理 + 排序)
排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...
- HDU 4950 Monster (水题)
Monster 题目链接: http://acm.hust.edu.cn/vjudge/contest/123554#problem/I Description Teacher Mai has a k ...
- HDU 4813 Hard Code 水题
Hard Code Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.act ...
- HDU 4593 H - Robot 水题
H - RobotTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.act ...
- HDOJ/HDU 2560 Buildings(嗯~水题)
Problem Description We divide the HZNU Campus into N*M grids. As you can see from the picture below, ...
- HDOJ(HDU) 1859 最小长方形(水题、、)
Problem Description 给定一系列2维平面点的坐标(x, y),其中x和y均为整数,要求用一个最小的长方形框将所有点框在内.长方形框的边分别平行于x和y坐标轴,点落在边上也算是被框在内 ...
- HDU - 1716 排列2 水题
排列2 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU—2021-发工资咯(水题,有点贪心的思想)
作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵 但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处的小胡老师最近就在考虑一个问题:如果每 ...
随机推荐
- 聪明的燕姿[JLOI2014]
题目描述 阴天傍晚车窗外 未来有一个人在等待 向左向右向前看 爱要拐几个弯才来 我遇见谁会有怎样的对白 我等的人他在多远的未来 我听见风来自地铁和人海 我排着队拿着爱的号码牌 城市中人们总是拿着号码牌 ...
- docker安装方法(常见安装出错问题汇总)
参考资料: 1. 开源中国 http://www.oschina.net/translate/nstalling-dockerio-on-centos-64-64-bit?cmp Docker 是一 ...
- 【FAQ系列】:DB服务器产生大量物理读问题优化思路
一 [现象] 1.7点到9点IO监控指标util特别高,如下: 2 .查看读写情况:读产生很高的物理IO,如下 [分析]:对比其他服务器,buffer pool都是80G,正常情况下热点数据都是从bu ...
- Linux - 简明Shell编程10 - 管道(Pipe)
脚本地址 https://github.com/anliven/L-Shell/tree/master/Shell-Basics 示例脚本及注释 #!/bin/bash echo '##### Num ...
- 详解.Net 如何上传自己的包到Nuget平台以及如何使用Nuget包管理器
首先需要一个Nuget账户,可以在官网注册:https://www.nuget.org.已有账户略. 需要一个ApiKeys,登录之后,在我的账户里找到ApiKeys进去; 创建ApiKeys 下载N ...
- C++ Socket学习记录 -2
WinSock TCP 编程流程 TCP通信,就像是固定电话,首先是要安装基站,然后是将电话号绑定到电话,然后拨号,接通之后说事,完事之后还要挂电话(甭管谁先挂). 1.初始化环境 使用函数 int ...
- WAMP环境 apache 2.4.23 局域网访问
参考了很多大神的分享解答, 现在不知道是参考的哪个人的 如有抄袭 侵权请告知, 加上链接或者删除!!! 最近想按个分屏提高学习代码效率, 晚上突然想到可以用本本连接WiFI 然后通过 局域网访问PC ...
- 解析Linux中的VFS文件系统之文件系统的来源与简介(一)
最近挂载了N多的文件系统,大致了不同文件系统的相应特性及挂载方式,却还是对Linux的文件系统没有从源码方面去了解.不求甚解确实不好不好. 于是借鉴一些大牛的博客及自己的理解,总结了博客系列: 一.V ...
- nmake学习笔记2
makefile中的“@<<”看起来很奇怪,查很多地方都没有结果.写了两个示例比较其结果: 如果makefile如下: All:main.obj func.obj link $** .cp ...
- Redis数据结构底层知识总结
Redis数据结构底层总结 本篇文章是基于作者黄建宏写的书Redis设计与实现而做的笔记 数据结构与对象 Redis中数据结构的底层实现包括以下对象: 对象 解释 简单动态字符串 字符串的底层实现 链 ...