文章

4

粉丝

176

获赞

7

访问

10.1k

头像
SPFA以及自己踩的坑
P1565 中国科学院大学2021年机试题
发布于2023年2月24日 18:52
阅读数 2.3k

 
#include <algorithm>
#include <bits/stdc++.h>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <math.h>
#include <queue>
#include <string>
using namespace std;
#define MAX 100000
int gra[105][105];//已知条件
int dis[105];//源点到其他顶点的距离
int vis[105];//标记当前顶点是否存在于队列中
void spfa(int s,int n){
  dis[s]=0;//源点到自己的距离为0,在每一个最短路径题目中,初始化很重要
  priority_queue<int> q;
  q.push(s);
  vis[s]=1;
  while (!q.empty()) {
    int now =q.top();
    q.pop();
    vis[now]=0;
    //如果源点通过当前now,能与其他顶点变得更近,就修改dis的值?
    for(int i=1;i<=n;++i){
     //此处的顶点,是在队列中,而不是所有最小边的集合,故它也要判断是否能通过now更新距离
     if(dis[i]>dis[now]+gra[now][i]){
        dis[i]=dis[now]+gra[now][i];
        //修改距离了不是无脑入队,要不在队列里面才入队    ...
登录查看完整内容


登录后发布评论

1 条评论
snake
2024年3月8日 15:25

yes

赞(0)