「 「 「图论 」 」 」第 3 3 3章 最短路径
目录:
A.单源最短路径
B.判断负环
C.最优贸易
D.汽车加油
A . A. A. 例题 1 1 1 单源最短路径
分析:
最短路模板 这不是弱化版 d i j k s t r a + dijkstra+ dijkstra+堆优化即可
也可以把普通 s p f a spfa spfa的 q u e u e queue queue改成 p r i o r i t y priority priority q u e u e queue queue就过了
CODE:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<bitset>
//#pragma GCC optimize(2)
#define reg register
using namespace std;
typedef long long ll;
typedef double db;
typedef unsigned long long ull;
const int N=1e5+5;
struct edge{
int to,next,dis;
}a[N*5];
int head[N],ans[N],tot,n,m,st,vis[N];
void add(int x,int y,int w)
{
a[++tot]=(edge){
y,head[x],w};
head[x]=tot;
}
struct node{
int dis,pos;
bool operator <(const node &x) const
{
return x.dis<dis;
}
}kel;
priority_queue<node> q; //堆
void dijkstra()
{
ans[st]=0;
q.push((node){
0,st});
while(!q.empty())
{
kel=q.top();
q.pop();
int now=kel.pos,d=kel.dis;
if(vis[now]) continue;
vis[now]=1;
for(int i=head[now];i;i=a[i].next)
{
int qwq=a[i