原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874

分析:SPFA|Dijkastra.

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#define ll long long
#define inf 0x6fffffff
#define maxn 205
using namespace std;
int g[maxn][maxn],dis[maxn],n,m;
bool vis[maxn];
void dijkastra(const int s)
{
for(int i=;i<n;i++)dis[i]=g[s][i];
memset(vis,false,sizeof(vis));
for(int i=;i<n;i++)
{
int mark=-,mindis=inf;
for(int j=;j<n;j++)
if(!vis[j]&&dis[j]<=mindis)
{
mark=j;mindis=dis[j];
}
if(mark==-)return;
vis[mark]=true;
for(int j=;j<n;j++)
if(!vis[j]&&j!=mark)dis[j]=min(dis[j],dis[mark]+g[mark][j]);
}
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
for(int i=;i<n;i++)
for(int j=;j<n;j++)
{
g[i][j]=inf;
if(i==j)g[i][j]=;
}
int u,v,t,s;
for(int i=;i<m;i++)
{
scanf("%d%d%d",&u,&v,&t);
if(g[u][v]>t)
{
g[u][v]=t;
g[v][u]=t;
}
}
scanf("%d%d",&s,&t);
dijkastra(s);
printf("%d\n",dis[t]>=inf?-:dis[t]);
}
return ;
}

最新文章

  1. 使用VirtualBox自带管理工具命令为虚拟磁盘扩展空间
  2. SQL中利用DMV进行数据库性能分析
  3. js如何判断一个数组
  4. U3D使anim,unity,prefab文件不显示乱码
  5. Solr4:数据导入(dataimport)时,不符合Solr日期类型要求的字段的处理
  6. 双操作系统Grub 引导修护
  7. POJ-3140 Contestants Division (树)
  8. [转] What is the point of redux when using react?
  9. 探索A@1db9742
  10. Java中的日期操作
  11. Chapter 1 Securing Your Server and Network(4):使用虚拟服务帐号
  12. elike.python.function()
  13. xaml中的依赖属性
  14. linux ubuntu平台下安装Scrapy
  15. C/C++语言简介之发展历史
  16. 5年后,我们为什么要从 Entity Framework 转到 Dapper 工具?
  17. npm版本安装问题
  18. web端MSF搭建
  19. css3图片旋转
  20. &lt;spark&gt; error:启动spark后查看进程,进程中master和worker进程冲突

热门文章

  1. Saving James Bond - Easy Version (MOOC)
  2. Python科学计算库灬numpy
  3. RNN: Feed Forward, Back Propagation Through Time and Truncated Backpropagation Through Time
  4. python怎么安装requests、beautifulsoup4等第三方库
  5. Python的sys.argv使用说明
  6. 基于C#的机器学习--机器学习的基本知识
  7. Scrum立会报告+燃尽图 01
  8. Eclipse项目导入到Android Studio中
  9. Java单例模式&amp;static成员变量 区别
  10. C语言文法阅读与理解