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);
    
    
        }
    
    }
  • 相关阅读:
    类型反射和晚期绑定
    JS读写Cookie(设置、读取、删除)
    数据绑定
    解读代码
    ASP.NET vNext (一)- 基本概念和环境配置
    设计模式总结
    面向接口编程技术架构图
    搞个这样的APP要多久? (转)
    网站服务架构(转)
    jexus
  • 原文地址:https://www.cnblogs.com/dowson/p/3364218.html
Copyright © 2011-2022 走看看