hiho(1081),SPFA最短路,(非主流写法)
题目链接:http://hihocoder.com/problemset/problem/1081
SPFA求最短路,是不应-羁绊大神教我的,附上头像。
我第一次写SPFA,我用的vector存邻接表,以后也会保持这种习惯。每个元素是一个pair类型,分别表示可连接的点,和权值。
SPFA:把起点放到队列,扫一遍可以链接的点,每一次松弛条件是:dist[next.first] = min(dist[next.first],dist[f]+next.second);就是说J—>S或者J—>K—>S;把没有访问过的点再次放到队列中去,继续更新没有访问的点,直至结束。
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <iomanip>
#include <vector>
#include <cstdlib>
#include <ctime>
#include <string>
#include <queue>
#include <map>
#include <cmath> using namespace std; typedef pair<int,int> pii; int spfa(vector<vector<pii> >& vadj, int nv, int sbeg, int send)
{
int dist[nv];
int a; for(a=;a<nv;++a)
dist[a]=;
dist[sbeg]=; bool vis[nv];
memset(vis,,sizeof(vis));
vis[sbeg]=true; queue<int>Q;
Q.push(sbeg); int ifrt;
pii next; while(Q.size())
{
ifrt=Q.front();
Q.pop();
vis[ifrt]=false; for(a=;a<vadj[ifrt].size();++a)
{
next=vadj[ifrt][a];
if(dist[next.first]>dist[ifrt]+next.second)
{
dist[next.first]=dist[ifrt]+next.second;
if(!vis[next.first])
{
Q.push(next.first);
vis[next.first]=true;
}
}
}
} return dist[send];
} int main()
{
int nv,ne;
int ibeg,iend;
int sa,sb,sd;
int a; cin>>nv>>ne;
cin>>ibeg>>iend; --ibeg;
--iend; vector<vector<pii> > vadj(nv); for(a=;a<ne;++a)
{
scanf("%d %d %d",&sa,&sb,&sd);
--sa;
--sb;
vadj[sa].push_back(make_pair(sb,sd));
vadj[sb].push_back(make_pair(sa,sd));
} cout<<spfa(vadj,nv,ibeg,iend)<<endl; return ;
}
hiho(1081),SPFA最短路,(非主流写法)的更多相关文章
- NOIP2013 华容道 (棋盘建图+spfa最短路)
#include <cstdio> #include <algorithm> #include <cstring> #include <queue> # ...
- poj1502 spfa最短路
//Accepted 320 KB 16 ms //有n个顶点,边权用A表示 //给出下三角矩阵,求从一号顶点出发到各点的最短路的最大值 #include <cstdio> #includ ...
- Poj(2679),SPFA,邻接表(主流写法)
题目链接:http://poj.org/problem?id=3268 题意: 有编号为1-N的牛,它们之间存在一些单向的路径.给定一头牛的编号,其他牛要去拜访它并且拜访完之后要返回自己原来的位置,求 ...
- hdu 5545 The Battle of Guandu spfa最短路
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5545 题意:有N个村庄, M 个战场: $ 1 <=N,M <= 10^5 $; 其中曹 ...
- HNU 13375 Flowery Trails (spfa最短路)
求最短路径覆盖的全部边权值和. 思路:分别从起点和终点两次求最短路,再比较两个点到起点的距离和他们之间的权值相加和是否等于最短路径. 这题很好 #include <cstring> #in ...
- poj 1847 Tram【spfa最短路】
Tram Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12005 Accepted: 4365 Description ...
- BZOJ 1003 物流运输 (动态规划 SPFA 最短路)
1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 5590 Solved: 2293 [Submit][Stat ...
- POJ - 1062(昂贵的聘礼)(有限制的spfa最短路)
题意:...中文题... 昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 54350 Accepted: 16 ...
- POJ 1556 - The Doors - [平面几何+建图spfa最短路]
题目链接:http://poj.org/problem?id=1556 Time Limit: 1000MS Memory Limit: 10000K Description You are to f ...
随机推荐
- cookie和session区别
cookie和session区 session是在服务器端保存用户信息,cookie是在客户端保存用户信息 session保存的是对象,cookie保存的是字符串 session会随回话结束而关闭,c ...
- UVA 10498 Happiness(线性规划-单纯形)
Description Prof. Kaykobad has given Nasa the duty of buying some food for the ACM contestents. Nasa ...
- String.Format数字格式化参考
String.Format数字格式化输出 {0:N2} {0:D2} {0:C2} (转) 数字 {0:N2} 12.36 数字 {0:N0} 13 货币 {0:c2} $12.36 货币 {0:c4 ...
- Android使用ZXing生成带图片的二维码
效果图如下: 制作过程很简单的就是在原始的二维码图片上添加一个logn图标,代码的注释写得很详细,也就不给大家啰嗦了 package com.example.day44_02_qrcodewithlo ...
- struts2中Double类型的转换
今天做项目,ssh + Extjs,页面js中定义了几个NumberField,对应的value都是double类型的,其中有个NumberField的name为 name,结果执行的时候报错了,说找 ...
- 在C#中使用LOG4NET(winform程序
http://www.csharpwin.com/csharpspace/678.shtml 1.下载log4net (Google log4net) 2.unzip log4net 3.运行VS,新 ...
- MyEclipse安装插件的三种方法和使用心得
本文讲解MyEclipse(MyEclipse10)的三种方法,以TestNG为例 Eclipse update site URL: http://beust.com/eclipse. 一.通过My ...
- hadoop自带例子wordcount的具体运行步骤
1.在hadoop所在目录“usr/local”下创建一个文件夹input root@ubuntu:/usr/local# mkdir input 2.在文件夹input中创建两个文本文件file1. ...
- Objective-C代码的文件扩展名与数据类型
Objective-C数据类型可以分为:基本数据类型.对象类型和id类型. 基本数据类型有:int.float.double和char类型. 对象类型就是类或协议所声明的指针类型,例如:SAutore ...
- datatables条件判断列显示还是隐藏
定义一个状态变量status根据条件取值true或者false,然后在datatables参数设置中相应的columns属性的data后面加上"visible":status,该列 ...