zoukankan      html  css  js  c++  java
  • poj 1724 ROADS 夜

    http://poj.org/problem?id=1724

    居然直接Dfs+剪枝就可以过 受不了啦!!!!!!!

    题目大意:

    n个城市间有单向路 路有长度和花费两个参数

    问在总花费不超过特定值的情况下从1到n的最短路 包括到不了的情况

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<queue>
    #include<algorithm>
    #include<set>
    
    using namespace std;
    
    const int W=101;
    struct node
    {
        struct tt *next;
    }mem[W];
    struct tt
    {
        int j;
        int L,T;
        struct tt *next;
    };
    int K,N,R,ans;
    int had[W];
    void build(int i,int j,int l,int T)
    {
        struct tt *t=new tt;
        t->j=j;
        t->L=l;
        t->T=T;
        t->next=mem[i].next;
        mem[i].next=t;
    }
    void dele()
    {
        for(int i=1;i<=N;++i)
        {
            mem[i].next=NULL;
        }
    }
    void Dfs(int x,int length,int pay)
    {
        //cout<<x<<endl<<endl;;
        struct tt *t=new tt;
        t=mem[x].next;
        while(t!=NULL)
        {
            if(had[t->j]==false&&pay+t->T<=K)
            {
                if(t->j==N)
                {
                    if(ans==-1||length+t->L<ans)
                    ans=length+t->L;
                }else if(ans==-1||length+t->L<ans)
                {
                    had[t->j]=true;
                    Dfs(t->j,length+t->L,pay+t->T);
                    had[t->j]=false;
                }
    
            }
            t=t->next;
        }
    }
    int main()
    {
       while(scanf("%d %d %d",&K,&N,&R)!=EOF)
       {
           int s,d,l,t;
           while(R--)
           {
               scanf("%d %d %d %d",&s,&d,&l,&t);
               build(s,d,l,t);
           }
           memset(had,false,sizeof(had));
           ans=-1;
           had[1]=true;
           Dfs(1,0,0);
           printf("%d\n",ans);
           dele();
       }
       return 0;
    }
    

      

  • 相关阅读:
    第十二章 圆周率的计算问题分析
    第十一章:random库概述
    【模板】分治 FFT
    [PKUWC2018]Slay the Spire
    [PKUWC2018]随机算法
    [PKUWC2018]Minimax
    线段树合并初探
    平衡树初探
    Luogu P1613 跑路 题解报告
    CH138 兔子和兔子 题解报告
  • 原文地址:https://www.cnblogs.com/liulangye/p/2594984.html
Copyright © 2011-2022 走看看