之所以做了第二道模板题还要写是因为发现了一些自己的问题

用的是dij 最简单的松弛

需要注意的地方是松弛的时候 判断dis[i]<dis[w]+tance[w][i]时 还要再判断 vis[i] 要保证这个点没有成为过最小点 即这个点不会是已经被松弛过的点

输入的时候要注意 可能会有重边的输入 每次输入的时候进行一次判断 如果输入的是较大值 就不用更换了

关于memset的使用 它只能用来设置0与-1 别的值会出现莫名的错误

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int dis[205];
int tance[205][205];
int vis[205];
int n,m;
int s,t;
void sc()
{
vis[s]=1;
for(int k=1;k<n;k++)
{
int minn=99999999;
int w=s;
for(int i=1;i<=n;i++)
{
if(dis[i]<minn&&vis[i]==0)
{
w=i;
minn=dis[i];
}
} vis[w]=1;
for(int i=1;i<=n;i++)
{
if(dis[i]>dis[w]+tance[w][i]&&vis[i]==0)
{
dis[i]=dis[w]+tance[w][i];
}
} }
return ; }
int main(){
while(~scanf("%d%d",&n,&m))
{
int inf=99999999;
memset(vis,0,sizeof(vis));
for(int i=0;i<202;i++)
for(int k=0;k<202;k++)
{
tance[i][k]=inf;
}
int a,b,c;
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&a,&b,&c);
{
if(tance[a+1][b+1]>c)
{
tance[a+1][b+1]=c;
tance[b+1][a+1]=c;
}
}
}
scanf("%d%d",&s,&t);
s+=1;
t+=1;
for(int i=1;i<=n;i++)
{
tance[i][i]=0;
dis[i]=tance[s][i];
}
dis[s]=0; sc(); if(dis[t]==99999999)
printf("-1\n");
else printf("%d\n",dis[t]);
}
}

  

hdu1874 最短路模板题的更多相关文章

  1. poj1511/zoj2008 Invitation Cards(最短路模板题)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Invitation Cards Time Limit: 5 Seconds    ...

  2. HDU 5521.Meeting 最短路模板题

    Meeting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  3. [poj2449]Remmarguts' Date(K短路模板题,A*算法)

    解题关键:k短路模板题,A*算法解决. #include<cstdio> #include<cstring> #include<algorithm> #includ ...

  4. 牛客小白月赛6 I 公交线路 最短路 模板题

    链接:https://www.nowcoder.com/acm/contest/136/I来源:牛客网 题目描述 P市有n个公交站,之间连接着m条道路.P市计划新开设一条公交线路,该线路从城市的东站( ...

  5. [USACO07FEB]银牛派对Silver Cow Party---最短路模板题

    银牛排队 对于我这种蒟蒻来说,还是不要跑一次单元最短路.跑两次好写呀(- ̄▽ ̄)- 而题目中是有向图.如果如果按照题意进行最短路的话.就会出现一个单终点最短路和一个单起点最短路 对于单起点自然就是套模 ...

  6. POJ 2387 Til the Cows Come Home --最短路模板题

    Dijkstra模板题,也可以用Floyd算法. 关于Dijkstra算法有两种写法,只有一点细节不同,思想是一样的. 写法1: #include <iostream> #include ...

  7. HDU 2544 最短路(模板题)

    求1到N的最短路径,模板题,以1为源点,用dijkstra算法(可以用优先级队列优化) #include <iostream> #include <algorithm> #in ...

  8. Til the Cows Come Home (最短路模板题)

    个人心得:模板题,不过还是找到了很多问题,真的是头痛,为什么用dijkstra算法book[1]=1就错了..... 纠结中.... Bessie is out in the field and wa ...

  9. POJ 2449 - Remmarguts' Date - [第k短路模板题][优先队列BFS]

    题目链接:http://poj.org/problem?id=2449 Time Limit: 4000MS Memory Limit: 65536K Description "Good m ...

随机推荐

  1. Win8 Cisco VPN Client 442错误解决办法

    进入注册表regedit,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CVirtA找到DisplayName, x86系统的将值" ...

  2. java中String类型转换方法

    integer to String : int i = 42;String str = Integer.toString(i);orString str = "" + i doub ...

  3. 安装及升级node

    一.mac下安装 1. 可直接在官网下载(http://nodejs.cn/),可使用命令查看版本: node -v node --version 同样npm同时也安装下来,可使用下面命令查看: np ...

  4. Android下利用Bitmap切割图片

    在自己自定义的一个组件中由于需要用图片显示数字编号,而当前图片就只有一张,上面有0-9是个数字,于是不得不考虑将其中一个个的数字切割下来,需要显示什么数字,只需要组合一下就好了. 下面是程序的关键代码 ...

  5. JAVA读取XML文件数据

    XML文档内容如下: <?xml version="1.0" encoding="UTF-8"?> <root> <field t ...

  6. Sublime Text 插件 & 使用技巧

    20 个强大的 Sublime Text 插件http://blog.jobbole.com/58725/ 12个不可不知的Sublime Text应用技巧和诀窍http://segmentfault ...

  7. poj 2406:Power Strings(KMP算法,next[]数组的理解)

    Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 30069   Accepted: 12553 D ...

  8. select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET(转)

    select函数用于在非阻塞中,当一个套接字或一组套接字有信号时通知你,系统提供select函数来实现多路复用输入/输出模型, 原型: int select(int maxfd,fd_set *rds ...

  9. adb 卸载APP命令和杀死APP命令

    使用adb 卸载APP命令 在cmd命令行下,直接 输入 adb uninstall 包名 比如 adb uninstall com.ghstudio.BootStartDemo 杀死APP命令 先用 ...

  10. 实现Activity刷新(转)

    目前刷新Acitivity,只想到几种方法.仅供参考,如果您有更好的方法,请赐教. 程序界面: 点击refresh view可以刷新界面,点击write content可以在EditText中自动写入 ...