zoukankan      html  css  js  c++  java
  • ROADS

    其实就是最短路....但我仍然WA了N次.....这道题我用了结构体,因为结构体排序比cmp快....先排长度最小,如果长度一样再排花的钱最少,再建个图,然后打板子.....

    代码:

    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<queue>
    using namespace std;
    struct str
    {
        int qi_dian,zhong_dian,chang_du,money;//起点,终点,长度,钱 
    }c[10002];
    struct pai_xu
    {
        int x,chang_du1,dang_qian_money;
        friend bool operator < (pai_xu i,pai_xu j)//排序 
        {
            if(i.chang_du1!=j.chang_du1) return i.chang_du1>j.chang_du1;
            else return i.dang_qian_money>j.dang_qian_money;
        }
    };
    int n,m,money_zong,hhh;
    int a[10001],b[10001],ans[10001];
    int main()
    {
            cin>>money_zong>>n>>m;
            memset(a,0,sizeof(a));//删了也行 
            memset(b,0,sizeof(b));
            memset(ans,0,sizeof(ans));
            for(int i=1;i<=m;i++)
            {
                cin>>c[i].qi_dian>>c[i].zhong_dian>>c[i].chang_du>>c[i].money;
                a[i]=b[c[i].qi_dian];
                b[c[i].qi_dian]=i;//建图 
            }
            pai_xu k={1,0,0};//节点从一,长度从0,钱也为0 
            priority_queue<pai_xu> que;//定个队列 
            que.push(k);
            int sum=-1;//
            while(!que.empty())
            {
                k=que.top();
                que.pop();
                int t=k.x;
                if(t==n)//走到了.... 
                {
                    sum=k.chang_du1;
                    break;
                }
                for(int i=b[t];i;i=a[i])//然后就打板子.... 
                {
                    if(c[i].money+k.dang_qian_money<=money_zong)//如果总钱数+当前钱数小于你有的钱数 
                    {
                        pai_xu h;
                        h.x=c[i].zhong_dian;
                        h.chang_du1=c[i].chang_du+k.chang_du1;
                        h.dang_qian_money=c[i].money+k.dang_qian_money;//当前钱数为总钱数加上这条路走的钱数 
                        que.push(h);
                    }
                }
            }
            cout<<sum<<endl;//输出 
    }

    好了....

  • 相关阅读:
    C++设计模式 ==> 装饰(者)模式
    基于路由器的VRRP技术--VRRP的应用
    基于路由器的VRRP技术--VRRP的应用
    C++设计模式 ==> 策略模式与简单工厂模式结合
    C++设计模式 ==> 简单工厂模式
    DVWA之Insecure Captcha
    DVWA之Insecure Captcha
    DVWA之File Inclusion
    DVWA之File Inclusion
    DVWA之XSS
  • 原文地址:https://www.cnblogs.com/dai-jia-ye/p/9428606.html
Copyright © 2011-2022 走看看