最短路(Dijkstra模板题)
就不写题目链接了
Sample Input
5 5 点个数a,边个数b
1 2 20 点,点,权值
2 3 30
3 4 20
4 5 20
1 5 100
求出1到a的最短距离
Sample Output
90
防止有重边
#include <iostream>
#include <cstdio>
using namespace std;
#define Max 1000+10
#define INF 0x3f3f3f3f
int cost[Max][Max];
int lowcost[Max];
bool vis[Max];
int N,T;
void dijkstra(int s)
{ int i,u,v;
for(u=;u<=N;u++)
{
lowcost[u]=INF;
vis[u]=;
}
lowcost[]=;
int Min=INF; while()
{
int p=-;
for(u=;u<=N;u++)
{
if(!vis[u]&&(p==-||lowcost[u]<lowcost[p]))
p=u;
}
if(p==-) break;
vis[p]=;
for(u=;u<=N;u++)
if(!vis[u]&&(lowcost[p]+cost[p][u])<lowcost[u])
lowcost[u]=lowcost[p]+cost[p][u];
}
}
int main()
{
int i,j;
int a,b,w;
freopen("in.txt","r",stdin);
while(scanf("%d%d",&T,&N)!=EOF)
{
for(i=;i<=N;i++)
{
for(j=;j<=N;j++)
{
if(j==i)
cost[i][j]=;
else
cost[i][j]=cost[j][i]=INF;
}
}
for(i=;i<T;i++)
{
scanf("%d%d%d",&a,&b,&w);
if(w<cost[a][b])
{
cost[a][b]=cost[b][a]=w;
}
}
dijkstra();
printf("%d\n",lowcost[N]);
}
}
#include <iostream>
#include <cstdio>
using namespace std;
#define Max 200+10
#define INF 0x3f3f3f3f
int cost[Max][Max];
int lowcost[Max];
bool vis[Max];
int N,M;
void dijkstra(int s)
{
int u,i,p;
for(u=;u<N;u++)
{
vis[u]=;
lowcost[u]=INF;
}
lowcost[s]=;
while()
{
p=-;
for(u=;u<N;u++)
if(!vis[u]&&(p==-||lowcost[u]<lowcost[p]))
p=u;
if(p==-) break;
vis[p]=;
for(u=;u<N;u++)
if(!vis[u]&&(lowcost[p]+cost[u][p])<lowcost[u])
lowcost[u]=lowcost[p]+cost[u][p];
}
}
int main()
{
int i,j;
int a,b,w,s,e;
freopen("in.txt","r",stdin);
while(~scanf("%d%d",&N,&M))
{ for(i=;i<N;i++)
for(j=;j<N;j++)
if(i==j) cost[i][j]=cost[j][i]=;
else cost[i][j]=cost[j][i]=INF; for(i=;i<M;i++)
{
scanf("%d%d%d",&a,&b,&w);
if(w<cost[a][b]) cost[a][b]=cost[b][a]=w; /*解决重边*/
}
scanf("%d%d",&s,&e);
dijkstra(s);
if(lowcost[e]==INF)
printf("-1\n");
else
printf("%d\n",lowcost[e]);
}
}
最短路(Dijkstra模板题)的更多相关文章
- HDU-2544 最短路 Dijkstra模板题
题目链接:https://vjudge.net/problem/HDU-2544 题意: 题目要求找到节点1到节点n之间的一条最短路 分析: Dijkstra模板题 单源最短路径,可以用dijkstr ...
- HDU 2544最短路dijkstra模板题
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU 2544 最短路 【Dijkstra模板题】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2544 思路:最短路的模板题 Dijkstra 算法是一种类似于贪心的算法,步骤如下: 1.当到一个点时, ...
- HDU 2544 最短路(模板题——Floyd算法)
题目: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你 ...
- hdu 2544 hdu 1874 poj 2387 Dijkstra 模板题
hdu 2544 求点1到点n的最短路 无向图 Sample Input2 1 //结点数 边数1 2 3 //u v w3 31 2 52 3 53 1 20 0 Sample Output32 ...
- 单源最短路——Dijkstra模板
算法思想: 类似最小生成树的贪心算法,从起点 v0 每次新拓展一个距离最小的点,再以这个点为中间点,更新起点到其他点的距离. 算法实现: 需要定义两个一维数组:①vis[ i ] 表示是否从源点到顶点 ...
- POJ 2387 Til the Cows Come Home (dijkstra模板题)
Description Bessie is out in the field and wants to get back to the barn to get as much sleep as pos ...
- POJ 1502:MPI Maelstrom Dijkstra模板题
MPI Maelstrom Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6499 Accepted: 4036 Des ...
- 图论--最短路-- Dijkstra模板(目前见到的最好用的)
之前的我那个板子,老是卡内存,不知道为什么,我看别人过的那个题都是结构体,我就开始对自己板子做了修改,然后他奶奶的就过了,而且速度也提高了,内存也小了.(自从用了这个板子,隔壁小孩馋哭了)也不知道为啥 ...
随机推荐
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之五
5应用测试 需要一个USB dongle与开发板evaluation kit,并配合Master Control Panel软件,以用于测试BLE应用.前期的准备工作在<nRF51822 Eva ...
- Unity有限状态机编写
有限状态机FSM 是对行为逻辑的抽象. 在整个FSM架构中 首先有一个状态基类stateObject 里面有三个方法,分别是状态前.状态中.状态后. 所有具体行为类都要继承这个基类,在这三个方法中具体 ...
- spark提交任务的流程
1.spark提交流程 sparkContext其实是与一个集群建立一个链接,当你停掉它之后 就会和集群断开链接,则属于这个资源的Excutor就会释放掉了,Driver 向Master申请资源,Ma ...
- window下配置ssh key
在windows下通过msysGit(Git for windows.Git Bash)配置SSH Keys连接GitHub. 1.检查本机是否有ssh key设置 $ cd ~/.ssh 或cd . ...
- ListView中RadioButton实现单项选择
1:FragmentHack5.java public class FragmentHack5 extends Fragment { View view; ListView lvCountries; ...
- Codeforces 474D Flowers
http://codeforces.com/problemset/problem/474/D 思路:F[i]=F[i-1]+(i>=K)F[i-k] #include<cstdio> ...
- IQC IPQC FQC OQC QA QE SQE CQS QM 简介区别
IQC Incoming quality control 来料质量控制.是企业产品过程质量的第一关,在这个部门工作的同事最主要的是要注意文件和资料,即:图纸 样品承认书 样板 ***配件检验规范 ,还 ...
- ActionBar Fragment运用最佳实践
ActionBar Fragment运用最佳实践
- PhpForm表单验证
<!DOCTYPE HTML> <html> <meta http-equiv="Content-Type" content="text/h ...
- Linux 使用yum工具
Red Hat 发行版安装后无法使用yum,须注册方可使用,可以通过以下方式处理:cd /etc/yum.repos.d/备份目录下已经存在的repo文件,然后新建文件local.repo,具体脚本如 ...