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< ...
随机推荐
- Kali配置教程
1.配置软件源 所有操作没有说明,都是以root身份执行. 打开一个终端执行: cat >> /etc/apt/sources.list <<EOF deb http://mi ...
- Dagger2不自动生成daggerXXXcomponent
在Fragment里面初始化dagger2创建对象时,不自动生成daggerXXXcomponent. 百思不得其解,后来发现是import android.app.Fragment;所以不自动生成. ...
- MySql多个count查询
现有一个student表结构数据如下: id hight sex age 1 160 0 16 2 170 1 16 3 180 1 17 4 160 1 16 5 170 ...
- 通过AssemblyResolve事件打包合并exe和dll文件
使用WPF开发的安装包,在创建快捷方式的时候,需要用到COM程序集Windows Script Host Object Model,引用COM程序集后,会在debug目录生成Interop.IWshR ...
- mv
mv命令是move的缩写,可以用来移动文件或者将文件改名,这也是个常用命令,经常用来备份文件或者目录. 1.命令格式: mv [选项] 源文件或目录 目标文件或目录 2.命令功能: 视mv命令中第 ...
- CSS(三)--自定义标签
HTML代码 <body> <ul> <li>1</li> <li>2</li> </ul> </body&g ...
- day04 列表
今天主要学习了 列表 什么是列表 定义: 能装对象的对象 在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求 列表存在索引和切片. 和字符串是一样的. 2. 相关的增删改查 ...
- SignalR 前期简单配置
一.随便你在哪个命名空间下新建一个Startup类,并在在该类中注册SignalR. using Owin; using System; using System.Collections.Generi ...
- Cracking The Coding Interview 3.6
// Write a program to sort a stack in ascending order. You should not make any assumptions about how ...
- powershell玩转litedb数据库-第二版
powershell可以玩nosql数据库吗?答案是肯定的.只要这个数据库兼容.net,就可以很容易地被powershell使用. 发文初衷:世界上几乎没有讲powershell调用nosql的帖子, ...