zoukankan      html  css  js  c++  java
  • poj1062昂贵的聘礼(DFS)

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

    poj计划里最短路题 用DFS做的。。

    弄了一下午 终于搜过了 注意 全局的最大跟最小值的差不能超过它所规定的限制

    View Code
     1 #include <iostream>
     2 #include<cstdio>
     3 #include<string.h>
     4 using namespace std;
     5 int m,mi,xf[111],flag,minn,maxx;
     6 struct node
     7 {
     8     int p,l,x;
     9     int t[101],v[101];
    10 }q[101];
    11 void dfs(int d,int tm)
    12 {
    13     int i,j,f = 0 ;
    14     for(i = 1; i <= q[d].x ; i++)
    15     {
    16         if(q[d].v[i]<q[d].p&&q[d].l-q[q[d].t[i]].l<=m&&!xf[q[d].t[i]])
    17         {
    18             int tmax = maxx;
    19             int tmin = minn;
    20             if(q[q[d].t[i]].l>maxx)
    21             maxx = q[q[d].t[i]].l;
    22             if(q[q[d].t[i]].l<minn)
    23             minn = q[q[d].t[i]].l;
    24             if(maxx-minn>m)
    25             {
    26                 maxx = tmax;
    27                 minn = tmin;
    28                 continue ;
    29             }
    30             xf[q[d].t[i]] = 1;
    31             tm += q[d].v[i];
    32             dfs(q[d].t[i],tm);
    33             xf[q[d].t[i]] = 0;
    34             tm-=q[d].v[i];
    35             maxx = tmax;
    36             minn = tmin;
    37             f = 1;
    38         }
    39     }
    40     if(!f)
    41     {
    42         tm+=q[d].p;
    43         if(mi>tm)
    44         mi = tm;
    45         tm-=q[d].p;
    46         return ;
    47     }
    48 }
    49 int main()
    50 {
    51     int i,j,k,n;
    52     scanf("%d%d",&m,&n);
    53     for(i = 1; i <= n ;i++)
    54     {
    55         scanf("%d%d%d",&q[i].p,&q[i].l,&q[i].x);
    56         for(j = 1; j <= q[i].x ; j++)
    57         scanf("%d %d",&q[i].t[j],&q[i].v[j]);
    58     }
    59     mi = q[1].p;
    60     minn = q[1].l;
    61     maxx = q[1].l;
    62     xf[1] = 1;
    63     dfs(1,0);
    64     printf("%d\n",mi);
    65     return 0;
    66 }
  • 相关阅读:
    C++格式化输入输出
    算法的时间复杂度和空间复杂度
    C++编程中const和#define的区别
    C#中结构体和类的区别
    SQL之删除触发器
    Windows添加和取消右键管理员权限
    SQL之trigger(触发器)
    SQL VIEW(视图)
    二分查找的实现
    C++中this指针
  • 原文地址:https://www.cnblogs.com/shangyu/p/2636795.html
Copyright © 2011-2022 走看看