poj 2387——单源最短路权值大于0
因为之前做过这个题。所以这次知道这道题有重边。这次dijkstra的写法加入了优先队列的优化
优先队列 结构体从小到大顺序的两种重载运算符的方式
bool operator <(const Time& a,const Time& b){
return a.start > b.start;
} //这里以大于重载小于是因为默认情况下,优先队列是以大的作为队首,这样一反,就可以再默认情况下使得小的作为队首
struct Time{
int start, end;
bool operator < (const Time& t)const{
return start > t.start;
}
};
对于从大到小结构体重载运算符的方式照上例
#include <iostream>
#include <cstring>
#include <string>
#include <map>
#include <set>
#include <algorithm>
#include <fstream>
#include <cstdio>
#include <cmath>
#include <stack>
#include <queue>
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
const double Pi=3.14159265358979323846;
typedef long long ll;
const int MAXN=+;
const int dx[]={,,,-};
const int dy[]={,-,,};
const int INF = 0x3f3f3f3f;
const int NINF = 0xc0c0c0c0;
const ll mod=1e9+;
struct qnode{
int to,d;
bool operator <(const qnode &r)const{
return d>r.d;
}
//运算符的重载
};
struct Graph {
int weight;
int arcs[MAXN][MAXN];
}G;
int dis[MAXN];
void dijkstra(int v,int n)
{ int U[MAXN];
priority_queue <qnode> Q;
for(int i=;i<=n;i++)
{
U[i]=;
}
for(int i=;i<=n;i++)
{
dis[i]=INF;
}
dis[v]=;
qnode tmp;
tmp.to=v;tmp.d=;
Q.push(tmp);
//这样的没法用优先队列优化,因为没有保留to的值,必须保留才行 while(!Q.empty())
{ tmp=Q.top();Q.pop();
int u=tmp.to;
if(U[u]) continue;
U[u]=;
for(int i=;i<=n;i++)
{
if(U[i]==&&G.arcs[u][i]>&&dis[i]>dis[u]+G.arcs[u][i])
{
dis[i]=dis[u]+G.arcs[u][i];
tmp.d=dis[i];tmp.to=i;
Q.push(tmp);
}
} } } int main()
{
int n,t;scanf("%d%d",&t,&n);
for(int i=;i<=t;i++)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(G.arcs[a][b]!=&&c>G.arcs[a][b])
continue;
else
{
G.arcs[a][b]=c;
G.arcs[b][a]=c;
}
}
dijkstra(n,n);
int ans=dis[];
cout <<ans<<endl;
return ;
}
加油!加油!加油!
poj 2387——单源最短路权值大于0的更多相关文章
- PAT甲级——1111 Online Map (单源最短路经的Dijkstra算法、priority_queue的使用)
本文章同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/90041078 1111 Online Map (30 分) ...
- POJ - 3268 单源最短路
题意:给定一些有向边,以及一个目的地,从某个点到达目的地,再从目的地回到那个点.共有n个点,问这n个点花费最大是多少? 思路:从目的地回去直接把目的地作为源点即可.那么从某个点到达目的地应该如何得到最 ...
- ASP.NET 成功执行Update 的 ExecuteNonQuery() 返回值大于0,但是查看数据库却没有改变
//真实姓名保存 $("#TrueNameSaveBtn").click(function () { if ($("#TrueNameSaveText").va ...
- 最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)
关于几个的区别和联系:http://www.cnblogs.com/zswbky/p/5432353.html d.每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个(草儿家到 ...
- Til the Cows Come Home(poj 2387 Dijkstra算法(单源最短路径))
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 32824 Accepted: 11098 Description Bes ...
- Dijkstra单源最短路径,POJ(2387)
题目链接:http://poj.org/problem?id=2387 Dijkstra算法: //求某一点(源点)到另一点的最短路,算法其实也和源点到所有点的时间复杂度一样,O(n^2); 图G(V ...
- 广搜,深搜,单源最短路径,POJ(1130),ZOJ(1085)
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=85 http://poj.org/problem?id=1130 这 ...
- POJ 1135 -- Domino Effect(单源最短路径)
POJ 1135 -- Domino Effect(单源最短路径) 题目描述: 你知道多米诺骨牌除了用来玩多米诺骨牌游戏外,还有其他用途吗?多米诺骨牌游戏:取一 些多米诺骨牌,竖着排成连续的一行,两 ...
- 图之单源Dijkstra算法、带负权值最短路径算法
1.图类基本组成 存储在邻接表中的基本项 /** * Represents an edge in the graph * */ class Edge implements Comparable< ...
随机推荐
- fiddler 抓包配置
1.我们安装完成后点击运行程序,就可以看到如下图,这是进入Fildder的第一个界面. 2.安装好后打开fiddler→选择 Tools >Fildder Options > Https ...
- java集合类,详解
集合详解 1.1HashSet HashSet是Set接口的一个子类,主要的特点是:里面不能存放重复元素,而且采用散列的存储方法,所以没有顺序.这里所说的没有顺序是指:元素插入的顺序与输出的顺序不一致 ...
- Elasticsearch安装部署(CentOS)
1.安装JDK,http://www.cnblogs.com/zhi-leaf/p/5996287.html. 2.下载ES:https://www.elastic.co/downloads/elas ...
- Ubuntu16.10下mysql5.7的安装及远程访问配置
如何安装mysql 1.sudo apt-get update,如果很慢或者失败,需要在软件和更新中选择最佳服务器,勾选所有互联网下载选项及去掉其他软件所有勾选项 2.sudo apt-get upg ...
- 逆袭之旅DAY16.东软实训.Oracle.索引
2018-07-12 14:44:27 四.索引1.创建索引手动创建:create index 索引名 on 表名(列名,[列名,...])create table employee(pno numb ...
- TCP_NODELAY算法使用事项
当有一个TCP数据段不足MSS,比如要发送700Byte数据,MSS为1460Byte的情况.nagle算法会延迟这个数据段的发送,等待,直到有足够的数据填充成一个完整数据段.也许有人会问,这有什么影 ...
- mysql不会使用索引,导致全表扫描情况
不会使用索引,导致全表扫描情况 1.不要使用in操作符,这样数据库会进行全表扫描,推荐方案:在业务密集的SQL当中尽量不采用IN操作符 2.not in 使用not in也不会走索引推荐方案:用not ...
- python 笔记数据类型
python基础: 采用缩进方式 4个空格的缩进 大小写敏感 数据类型和变量 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值,但是,计算机能处理的 ...
- TModalResult 和 MessageBox 返回值
//其实是对应的{ TModalResult values } const mrNone = ; mrOk = idOk; mrCancel = idCancel; mrAbort = idAbort ...
- 【转载二】Grafana系列教程–Grafana的下载及安装
本篇教程,waitig 来为大家介绍一下Grafana的安装及运行的方式. 更多Grafana技术请加入<InfluxDB&Grafana技术交流群:580487672(点击加入)> ...