zoukankan      html  css  js  c++  java
  • 1724ROADS

    广搜省时在这道题目就明显得看出来

    而且不一定要走全,但是一定要走到最后那个点

    我的代码超时

    #include "iostream"
    #include "string.h"
    #include "algorithm"
    using namespace std;
    struct{
      int a,b,l,t,pre;
    }edge[10010];
    
    int f[120],next[120],longth,MIN,k,m,n,num;
    
    void add(int a,int b,int l,int t){
      edge[num].b=b;
      edge[num].l=l;
      edge[num].t=t;
      edge[num].pre=next[a];
      next[a]=num++;
    }
    
    
    
    void dfs(int x,int sum){
      int flag=0,i;
      if(f[x]==4){return;}
      if(sum>k){return;}
      if(x==n){
        if(MIN>longth)MIN=longth;
        return;
      }
      for(i=next[x];i!=-1;i=edge[i].pre){
        f[edge[i].b]++;
        longth+=edge[i].l;
        //cout<<x<<' '<<edge[i].b<<' '<<sum<<' '<<longth<<endl;system("pause");
        dfs(edge[i].b,sum+edge[i].t);
        longth-=edge[i].l;
        f[edge[i].b]--;
      }
    }
    
    int main(){
      int i,a,b,l,t;
      cin>>k>>n>>m;
      num=0;
      memset(f,0,sizeof(f));
      memset(next,-1,sizeof(next));
      for(i=1;i<=m;i++){
        cin>>a>>b>>l>>t;
        add(a,b,l,t);
      }
      MIN=100000;
      longth=0;
      f[1]=1;
      dfs(1,0);
      if(MIN==100000)cout<<"impossible"<<endl;
      else cout<<MIN<<endl;
    }

    人家的代码

    #include<stdio.h>
    #include<string.h>
    #include<vector>
    #include<queue>
    #include "string.h"
    #include "algorithm"
    using namespace std;
    #define maxn 20000
    #define max 0x7fffffff
    
    struct node
    {
        int d;
        int l;
        int t;
        int next;
    
    }p[maxn*2];
    struct nn
    {
        int v;
        int l;
        int mon;
         friend bool operator <(nn a,nn b)
        {
            return a.l>b.l;
        }
    };
    priority_queue<nn>g;
    int num,k,n,r,vis[maxn*2],next[maxn],ans;
    
    void add(int s,int d,int l,int t)
    {
        p[num].d=d;
        p[num].l=l;
        p[num].t=t;
        p[num].next=next[s];
        next[s]=num++;
    
    
    }
    int BFS()
    {
        struct nn d,b;
        while(!g.empty())g.pop();
        d.l=0;
        d.mon=0;
        d.v=1;
        g.push(d);
        while(!g.empty())
        {
            d=g.top();g.pop();
    
            int a=d.v;
            if(a==n)return d.l;
    
            for(int i=next[a];i!=-1;i=p[i].next)
            {
                if(d.mon+p[i].t<=k)
                {   //printf("%d %d %d %d
    ",a,p[i].d,d.l,d.mon);system("pause");
                    b.l=d.l+p[i].l;
                    b.mon=d.mon+p[i].t;
                    b.v=p[i].d;
                    g.push(b);
                }
            }
        }
        return -1;
    
    }
    
    int main()
    {
        int i,s,d,l,t;
        while(scanf("%d%d%d",&k,&n,&r)!=EOF)
        {
    
            num=0;
            memset(next,-1,sizeof(next));
            for(i=0;i<r;i++)
            {
                scanf("%d%d%d%d",&s,&d,&l,&t);
                add(s,d,l,t);
            }
            memset(vis,0,sizeof(vis));
    
    
           int ans=BFS();
           printf("%d
    ",ans);
    
    
        }
    
    }
  • 相关阅读:
    [转载] ASP.NET MVC (一)——深入理解ASP.NET MVC
    冒泡排序C#实现,使用委托,包括三种方式:Fun<>,匿名方法,Lambda表达式
    工厂模式怎么用?举例说明
    使用设计模式,到底有什么好处?举例说明
    百度 Echarts 地图表 js 引用路径
    移动Web
    uni-app
    微信公众号分享时,提示invalid signature,签名错误
    windows系统开放外部访问端口
    node报错Request header field Content-Type is not allowed by
  • 原文地址:https://www.cnblogs.com/dowson/p/3364218.html
Copyright © 2011-2022 走看看