zoukankan      html  css  js  c++  java
  • P4568 [JLOI2011]飞行路线 题解(分层图模板)

    题目链接

    题目思路

    这就是分层图啊,其实感觉就是多维最短路而已

    代码

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    typedef unsigned long long ull;
    typedef pair<int,int> pii;
    #define fi first
    #define se second
    #define debug printf("aaaaaaaaaaa\n");
    const int maxn=5e4+5,inf=0x3f3f3f3f,mod=1e9+7;
    const ll INF=0x3f3f3f3f3f3f3f3f;
    const double eps=1e-7;
    int n,m,k;
    int s,t;
    int head[maxn],cnt;
    int dis[maxn][15];
    struct edge{
        int to,next,w;
    }e[maxn<<1];
    void add(int u,int v,int w){
        e[++cnt]={v,head[u],w};
        head[u]=cnt;
    }
    struct node{
        int len,pos,free;
        friend bool operator<(node a, node b){
            return a.len>b.len;
        }
    };
    void dij(int x){
    	priority_queue<node> que;
    	memset(dis,0x3f,sizeof(dis));
    	dis[x][0]=0;
    	que.push({0,x,0});
    	while(!que.empty()){
    		int len=que.top().len;
    		int pos=que.top().pos;
    		int free=que.top().free;
    		que.pop();
    		if(len!=dis[pos][free]) continue;
            for(int i=head[pos];i;i=e[i].next){
                if(dis[e[i].to][free]>dis[pos][free]+e[i].w){
                    dis[e[i].to][free]=dis[pos][free]+e[i].w;
                    que.push({dis[e[i].to][free],e[i].to,free});//一定注意是len为fi
                }
                if(free<k){
                     if(dis[e[i].to][free+1]>dis[pos][free]){
                        dis[e[i].to][free+1]=dis[pos][free];
                        que.push({dis[e[i].to][free+1],e[i].to,free+1});//一定注意是len为fi
                    }
                }
            }
    
    	}
    }
    int main(){
        cin>>n>>m>>k;
        cin>>s>>t;
        for(int i=1,u,v,w;i<=m;i++){
            cin>>u>>v>>w;
            add(u,v,w),add(v,u,w);
        }
        dij(s);
        int ans=inf;
        for(int i=0;i<=k;i++){
            ans=min(ans,dis[t][i]);
        }
        printf("%d\n",ans);
        return 0;
    }
    
    
    不摆烂了,写题
  • 相关阅读:
    ABP文档
    SqlServer英文单词全字匹配
    npm不是以管理身份运行遇到的问题
    concurrenthashmap jdk1.8
    HashSet源码分析 jdk1.6
    Iterator设计模式--jdk1.7
    代理模式
    高并发下的HashMap,ConcurrentHashMap
    HashMap源码分析jdk1.6
    Stack&Vector源码分析 jdk1.6
  • 原文地址:https://www.cnblogs.com/hunxuewangzi/p/15090665.html
Copyright © 2011-2022 走看看