首页 > 其他分享 >SPFA例题/模板

SPFA例题/模板

时间:2022-09-04 18:23:07浏览次数:51  
标签:nxts int back define SPFA push 例题 模板 dis

https://www.acwing.com/problem/content/1131/

 

#include<bits/stdc++.h>

#define fore(x,y,z) for(LL x=(y);x<=(z);x++)
#define forn(x,y,z) for(LL x=(y);x<(z);x++)
#define rofe(x,y,z) for(LL x=(y);x>=(z);x--)
#define rofn(x,y,z) for(LL x=(y);x>(z);x--)
#define pb push_back
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second

using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
typedef pair<LL,LL> PLL;

int n,m,s,t;
vector<int> adj[3000];
vector<int> cost[3000];
int dis[3000];
bool st[3000];
void SPFA()
{
    memset(dis,0x3f,sizeof(dis));
    dis[s]=0;
    
    deque<int> que;
    que.push_back(s);
    st[s]=true;
    while(que.size())
    {
        int u=que.front();
        que.pop_front();
        st[u]=false;
        auto &nxts=adj[u];
        auto &costs=cost[u];
        int sz=nxts.size();
        for(int i=0;i<sz;i++)
        {
            if(dis[nxts[i]]>dis[u]+costs[i])
            {
                dis[nxts[i]]=dis[u]+costs[i];
                if(!st[nxts[i]])
                {
                    que.push_back(nxts[i]);
                    st[nxts[i]]=true;
                }
            }
        }
    }
}

void YD()
{
    cin>>n>>m>>s>>t;
    while(m--)
    {
        int a,b,c;cin>>a>>b>>c;
        adj[a].push_back(b);
        cost[a].push_back(c);
        adj[b].push_back(a);
        cost[b].push_back(c);
    }
    SPFA();
    cout<<dis[t]<<endl;
}
 
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int T=1;
    //cin >> T;
    while (T--)
    {
        YD();
    }
    return 0;
}
View Code

需要使用队列,以及st标记数组记录点是否在队列中

每一步出队需要更新距离

标签:nxts,int,back,define,SPFA,push,例题,模板,dis
From: https://www.cnblogs.com/ydUESTC/p/16655643.html

相关文章

  • 算法模板
    基础算法倍增intget(intl,intr){intd=r-l+1;intc=upper_bound(one,one+max_v+1,d)-one-1;returnmax(dp[l][c],dp[r-one[c]......
  • django4/网页伪静态/视图层/模板层
    网页伪静态动态页动态网页,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。静态页即静态网页,是实际存在的,无需经过服务器......
  • enjoy模板引擎
    <dependency> <groupId>com.jfinal</groupId> <artifactId>enjoy</artifactId> <version>5.0.0</version></dependency>importcom.jfinal.kit.Kv;importcom.jfina......
  • velocity模板渲染引擎
    <dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>使用人数最多的版本</version></dependency>im......
  • 网页伪静态、视图层、模板层、form表单如何携带数据文件
    目录网页伪静态1.什么是伪静态网页?2.伪静态的好处3.实现伪静态网页视图层1.三板斧2.三板斧的本质Django视图层函数必须要返回一个HttpResponse对象研究底层源码3.视图函数......
  • 模板-字符串
    后缀数组用倍增求得后缀数组,o(nlogn):求得后缀排名rk,即排名的后缀saLLn;//下标从1开始chars[N];intsa[N],rk[N],rk2[N],ht[N];voidgetSa(){//根据r......
  • 模板-数论
    原来源:dian巨阶乘逆元求组合数在做D-MadokaandTheCorruptionScheme时,一个满二叉树的走法就是C(n,i),在n轮中赢几场,最终就是杨辉三角前缀和template<type......
  • Django数据传递与模板语法
    Django数据传递与模板语法视图函数返回值1.视图函数的返回值其实本质上返回的都是HttpResponse对象,HttpResponse其实是一个类,我们最常使用的render和redirect都是这个类......
  • 视图层与模板层
    网页伪静态伪静态页面其实是动态页面,只是看起来和静态页面一样,将动态网页伪装成静态网页,可以提升网页被搜索引擎收录的概率,表现上网址看的像一个具体的文件路径deftest(......
  • 【Django】 第04回 视图层与模板层
    目录1.网页伪静态2.视图层2.1视图函数的返回值问题2.2视图函数返回json格式数据2.3from表单携带文件数据2.4FEV与CBV2.5CBV源码分析3.模板层3.1模板语法传值3.2......