只有一丢~的代码(附加一些不知道对不对的口胡)
至于图吗,,,,,我想后期我会补上~只是我想~~~~
先贴上
#include<iostream>
#include<cstdio>
#include<string.h>
#define Tnf 2147483647
/*
fist[一个点x]=边 表示x这个点连接的第一条边是谁
next[一条边mm]=边kk 表示mm这条边连接的下一条边的名字叫kk
to[一条边xx]=一个点y1 表示xx这条边连向的点是y1
weight[一条边]=一个值, 是表示这个边的权值
*/
using namespace std;
int n,m,s;
long long int dis[500001],next[500001],head[500001],book[500001],to[500001],w[500001],tot=0;
void add(int a,int b,int c)
{
/*要知道,邻接表中(加边操作)只能是通过第一条边是谁来查找,要想插入每一条边,只能是通过不断的更新第一条便来实现的,先让现在插入的边连接目前该电
的第一条边,然后把应该插入的点视为该点的第一条边*/
tot++;
to[tot]=b;
w[tot]=c;
next[tot]=head[a];
head[a]=tot;
}
/*
dijkstra 的一般步骤,1.从一个点开始搜索,不断计算长度(先初始化,如果两路不通,直接输出最大值即可,speciallist dis这个数组也是会因为开始的源点不同而变化,每次都更新还是有必要的)
2.每一次都是从不同的点进行的d