文章

4

粉丝

176

获赞

8

访问

12.0k

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

 
#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];
        //修改距离了不是无脑入队,要不在队列里面才入队    ...
登录查看完整内容


登录后发布评论

2 条评论
zhang111
2024年6月2日 20:02

赞一个

 

赞(0)
snake VIP
2024年3月8日 15:25

yes

赞(1)