zoukankan      html  css  js  c++  java
  • P2939 [USACO09FEB]改造路Revamping Trails


    竟然没有看出来是分层图==


    #include<bits/stdc++.h>
    using namespace std;
    int ne,head[4200010],n,m,a,b,c,k,vist[4200010],d[4200010];
    struct node{int to,nxt,dis;}eg[4200010];
    void adde(int u,int v,int c){eg[++ne].nxt=head[u];eg[ne].dis=c;eg[ne].to=v;head[u]=ne;}
    priority_queue<int,vector<pair<int,int> >,greater<pair<int,int> > >q;
    void dij(int s){
        d[s]=0;
        q.push(make_pair(0,s));
        while(!q.empty())
        {
        int tt=q.top().second;
        q.pop();
        if(vist[tt])continue;
        vist[tt]=1;
        for(int i=head[tt];i;i=eg[i].nxt)
        if(d[eg[i].to]>d[tt]+eg[i].dis){d[eg[i].to]=d[tt]+eg[i].dis;
        q.push(make_pair(d[eg[i].to],eg[i].to));    }
        }
    }
    int main()
    {
        memset(d,0x3f,sizeof(d));
        cin>>n>>m>>k;
        while(m--)
        {
            cin>>a>>b>>c;
            adde(a,b,c);adde(b,a,c);
            for(int i=1;i<=k;i++)
            {adde(a+i*n,b+i*n,c);adde(b+i*n,a+i*n,c);
            adde(a+(i-1)*n,b+i*n,0);adde(b+(i-1)*n,a+i*n,0);
            }
        }
        dij(1);
        cout<<d[(k+1)*n];
    }
  • 相关阅读:
    网络对抗实验一
    计蒜课--顺序表查找、删除、遍历操作的复习
    实验六
    实验五
    实验四
    实验三
    python补码转源码
    教学设计的方法
    十、python进程和线程
    九、文件和异常
  • 原文地址:https://www.cnblogs.com/SFWR-YOU/p/11419803.html
Copyright © 2011-2022 走看看