zoukankan      html  css  js  c++  java
  • [BZOJ] 2763: [JLOI2011]飞行路线

    分层图最短路,和冻结几乎一样。

    在dis的基础上添加一维即可。

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<queue>
     
    using namespace std;
     
    inline int rd(){
        int ret=0,f=1;char c;
        while(c=getchar(),!isdigit(c))f=c=='-'?-1:1;
        while(isdigit(c))ret=ret*10+c-'0',c=getchar();
        return ret*f;
    }
     
    const int MAXN=10006;
     
    struct Edge{
        int next,to,w;
    }e[1000000];
    int ecnt,head[MAXN];
    inline void add(int x,int y,int w){
        e[++ecnt].next = head[x];
        e[ecnt].to = y;
        e[ecnt].w = w;
        head[x] = ecnt;
    }
     
    int n,m,num;
    int S,T;
     
    queue<int> Q,Qk;
    int dis[MAXN][11],inq[MAXN][11];
    void spfa(){
        memset(dis,0x3f,sizeof(dis));
        Q.push(S);Qk.push(0);dis[S][0]=0;inq[S][0]=1;
        while(!Q.empty()){
            int top=Q.front();Q.pop();int tmp=Qk.front();Qk.pop();
            inq[top][tmp]=0;
            for(int i=head[top];i;i=e[i].next){
                int v=e[i].to;
                if(dis[v][tmp]>dis[top][tmp]+e[i].w){
                    dis[v][tmp]=dis[top][tmp]+e[i].w;
                    if(!inq[v][tmp]) Q.push(v),Qk.push(tmp),inq[v][tmp]=1;
                }
                if(tmp<num&&dis[v][tmp+1]>dis[top][tmp]+0){
                    dis[v][tmp+1]=dis[top][tmp]+0;
                    if(!inq[v][tmp+1]) Q.push(v),Qk.push(tmp+1),inq[v][tmp+1]=1;
                }
            }
        }
    }
    int main(){
        n=rd();m=rd();num=rd();
        S=rd();T=rd();
        int x,y,w;
        for(int i=1;i<=m;i++){
            x=rd();y=rd();w=rd();
            add(x,y,w);add(y,x,w);
        }
        spfa();
        int ans=1<<30;
        for(int i=0;i<=num;i++)ans=min(ans,dis[T][i]);
        cout<<ans;
        return 0;
    }

    本文来自博客园,作者:GhostCai,转载请注明原文链接:https://www.cnblogs.com/ghostcai/p/9393439.html

  • 相关阅读:
    凸松弛技术解密
    机器学习中的逻辑回归模型简介
    机器学习中的损失函数
    逻辑回归的MATLAB实现(二分类问题)
    Lua和C++交互详细总结【转载】
    微擎手机端上传视频(图片)
    IOS开发:UIAlertView使用
    高度自适应问题
    css样式问题
    browser-sync
  • 原文地址:https://www.cnblogs.com/ghostcai/p/9393439.html
Copyright © 2011-2022 走看看