poj 1724ROADS(bfs和dfs做法)

 1 /*
 2 dfs比较好想,就是测试数据的问题,导致在遍历边的时候要倒着遍历才过!
 3 */
 4 #include<iostream> 
 5 #include<cstdio>
 6 #include<cstring>
 7 #include<vector>
 8 #include<algorithm>
 9 #define Max 0x3f3f3f3f
10 using namespace std;
11 
12 struct node{
13    int D;
14    int L, T;
15    node(int D, int L, int T){
16       this->D=D;
17       this->L=L;
18       this->T=T;
19    }
20    node(){
21    }
22 };
23 
24 node v[105][1000];
25 int cnt[105];
26 int vis[105];
27 
28 int maxCost, R, N, S, D, L, T;
29 int cost, dist;
30 
31 void dfs(int cur, int d, int c){
32    int i;
33    if(cur == N){
34        if(dist>d){
35           dist=d;
36           if(cost>c)  cost=c;
37        }
38        return ;
39    }
40    for(i=cnt[cur]-1; i>=0; --i)
41       if(!vis[v[cur][i].D] &&  c+v[cur][i].T<=maxCost && d+v[cur][i].L<dist){
42          vis[v[cur][i].D]=1;
43          dfs(v[cur][i].D, d+v[cur][i].L, c+v[cur][i].T);
44          vis[v[cur][i].D]=0;
45       }
46 }
47 
48 int main(){
49    while(scanf("%d", &maxCost)!=EOF){
50        scanf("%d%d", &N, &R);
51        memset(cnt, 0, sizeof(cnt));
52        while(R--){
53           scanf("%d%d%d%d", &S, &D, &L, &T);
54           v[S][cnt[S]++]=node(D, L, T);
55        }
56        cost=dist=Max;
57        memset(vis, 0, sizeof(vis));
58        dfs(1, 0, 0);
59        if(cost<=maxCost)
60           printf("%d\n", dist);
61        else printf("-1\n");
62    }
63    return 0;
64 }
 1 /*
 2   spfa + 01背包 
 3   dist[next][j]=min(dist[cur][j-v[cur][i].T]+v[cur][i].L) j={v[cur][i].T。。。maxCost}
 4   一维数组表示的是城市节点,二维表示的当前费用
 5   dist[i][j]表示经过i城市,费用为j时总的路径长度! 
 6 */
 7 #include<iostream> 
 8 #include<cstdio>
 9 #include<cstring>
10 #include<vector>
11 #include<queue>
12 #include<algorithm>
13 #define Max 0x3f3f3f3f
14 using namespace std;
15 
16 struct node{
17    int D;
18    int L, T;
19    node(int D, int L, int T){
20       this->D=D;
21       this->L=L;
22       this->T=T;
23    }
24    node(){
25    }
26 };
27 
28 node v[105][1000];
29 int cnt[105];
30 int dist[105][10005];
31 int vis[105];
32 queue<int>q;
33 int maxCost, R, N, S, D, L, T;
34 
35 int spfa(){
36    int i;
37    while(!q.empty()){
38        int cur = q.front();
39        q.pop();
40        vis[cur]=0;
41        for(i=0; i<cnt[cur]; ++i){
42            int next=v[cur][i].D;
43            for(int j=v[cur][i].T; j<=maxCost; ++j)
44               if(dist[next][j]>dist[cur][j-v[cur][i].T]+v[cur][i].L){
45                  dist[next][j]=dist[cur][j-v[cur][i].T]+v[cur][i].L;
46                  if(!vis[next]){
47                    vis[next]=1;
48                    q.push(next);
49                  }
50              }
51        }
52    }
53 }
54 
55 void bfs(int cur){
56    q.push(1);
57    memset(dist, 0x3f, sizeof(dist));
58    for(int i=0; i<105; ++i)
59       dist[1][i]=0;
60    vis[1]=1;
61    spfa();
62 }
63 
64 int main(){
65    while(scanf("%d", &maxCost)!=EOF){
66        scanf("%d%d", &N, &R);
67        memset(cnt, 0, sizeof(cnt));
68        while(R--){
69           scanf("%d%d%d%d", &S, &D, &L, &T);
70           v[S][cnt[S]++]=node(D, L, T);
71        }
72        memset(vis, 0, sizeof(vis));
73        bfs(1);
74        int minDist=Max;
75        for(int i=1; i<=maxCost; ++i)
76           if(minDist>dist[N][i])
77               minDist=dist[N][i];
78        if(minDist!=Max)
79           printf("%d\n", minDist);
80        else printf("-1\n");
81    }
82    return 0;
83 }

 

 

 

转载于:https://www.cnblogs.com/hujunzheng/p/3874165.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为新系统 鸿蒙,旗舰CPU+鸿蒙OS!华为Mate家族重磅新品来袭

我们常说安卓平板的生态跟苹果iPad有很大差距&#xff0c;不论是应用质量还是原生系统支持&#xff0c;苹果都做的更好一些。可能也是因为这个原因&#xff0c;因此安卓平板&#xff0c;尤其是旗舰级别的平板至今除了三星之外&#xff0c;也就只有华为在做。作为安卓阵营两大厂…

mysql中用来取余数的函数是_MySQL常用函数-单行处理函数-字符串处理函数(更新中...)...

本篇文章用到的数据库表/* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.7.23-log : Database - myemployees ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE*/;/*!40014 SET OLD_UNIQUE_CHECKSUN…

HDU 1024Max Sum Plus Plus(最大m字段和)

/* 动态转移方程&#xff1a;dp[i][j]max(dp[i-1]a[i], max(dp[t][j-1])a[i]) (j-1<t<i) 表示的是前i个数j个字段和的最大值是多少&#xff01; */ 1 #include<iostream> 2 #include<cstdio>3 #include<cstring>4 #define N 10000 5 using nam…

html盒子模型页面居中,【静态页面架构】CSS之盒子模型

CSS架构盒子模型&#xff1b;以内容区(显示文本和图像)内边距(内容区至边距的距离)边距(内容区的边界)外边距(元素的边框之间的距离)1.边距&#xff1b;border属性&#xff1b;简写属性用来设置边距的上(top)右(right)下(bottom)左(left)。宽度&#xff0c;颜色和样式div{width…

最强动画制作人书包_声优访谈丨恋与制作人动画中配声优访谈——夏磊

亲爱的制作人们&#xff1a;距离恋与制作人动画上线还有6天&#xff01;今天的中配声优访谈嘉宾是在动画中为许墨献声的夏磊老师~固定布局 工具条上设置固定宽高背景可以设置被包含可以完美对齐背景图和文字以及制作自…

(单例设计模式中)懒汉式与饿汉式在多线程中的不同

/*目的&#xff1a;分析一下单例设计模式中&#xff0c;懒汉式与饿汉式在多线程中的不同&#xff01;开发时我们一般选择饿汉式&#xff0c;因为它简单明了&#xff0c;多线程中不会出现安全问题&#xff01;而饿汉式需要我们自己处理程序中存在的安全隐患&#xff0c;但是饿汉…

shiro修改html不生效,shiro中anon配置不生效

再配置shiro的时候&#xff0c;如下代码要注意&#xff1a;1、下述代码中必须是LinkedHashMap 而不能是HashMap。2、anon定义必须在authc之前否则anon定义不生效Beanpublic ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager){ShiroFilterFactor…

codesys com库_CoDeSys官方系统库在线下载,替换国内下载服务器教程

欢迎加入工控分享技术服务社区推荐阅读Codesys学习资料大全Codesys控制器关于CANopen总线的详细应用说明当你软件报以下错误&#xff0c;你可以直接下载&#xff0c;如果下载不成功&#xff0c;可以换个网络试一试&#xff0c;或者进行下面的操作。由于国内网络问题&#xff0c…

centos7恢复mysql数据库_MySQL数据库升级迁移填坑记

原库&#xff1a;*.*.101.73/74 系统环境: Suse 12.4MySQL: 5.7.29新库&#xff1a;*.*.110.46/47系统环境&#xff1a;CentOS7.7 64位MySQL版本: 5.7.30[一、数据库升级迁移场景]因业务侧在*.*.101.73/74 mysql数据库服务器上部署了java应用程序、HadoopHbase数据库等大数据…

so把asp页面生成静态的html,23、asp系列课程--server.URLEncode方法和server.HTMLEncode方法...

作者&#xff1a;杨凡来自&#xff1a;杨凡博客地址&#xff1a;blog.sina.com.cn/aboutshisanserver.URLEncode方法和server.HTMLEncode方法可以对字符串进行编码。我们一个一个的说。server.URLEncode可以对字符串进行URL编码转换&#xff0c;语法格式为&#xff1a;server.u…

poj 1905Expanding Rods

1 /*2 二分 几何3 弧长L&#xff0c; 圆半径R&#xff0c; 弧度 q&#xff0c; LR*q;4 二分&#xff1a; 弧度&#xff08;0~PI&#xff09; 或者 高度&#xff08;L/2~L&#xff09; 5 */6 #include<cstdio> 7 #include<iostream>8 #include<cmath>9…

java中同步嵌套引起的死锁事例代码

/*目的&#xff1a;自己写一个由于同步嵌套引起的死锁&#xff01;思路&#xff1a;多个线程在执行时&#xff0c;某一时刻&#xff0c;0-Thread绑定了LockA锁&#xff0c;1-Thread绑定了LockB锁&#xff01;当0-Thread要去绑定LockB锁时 和 1-Thread要去绑定LockA锁时都不能绑…

下列关于html5表单的多样输入方式,IT兄弟连 HTML5教程 HTML5表单 多样的输入类型1...

原标题&#xff1a;IT兄弟连 HTML5教程 HTML5表单 多样的输入类型1HTML5拥有多个新的表单输入类型&#xff0c;这些新特性提供了更好的输入控制和验证。并不是所有的主浏览器都支持新的input类型&#xff0c;不过我们可以在所有的主浏览器中使用它们&#xff0c;即使不被支持&a…

v7000更换电池步骤_ups电源运行中是否可以更换电池?应如何操作呢

ups电源在日常使用中除了日常维护工作之外&#xff0c;对于使用达到一定年限的时候&#xff0c;内部使用的ups蓄电池就需要更换了&#xff0c;很多人以为ups不间段电源在工作的时候是可以跟换电池。其实&#xff0c;这个具体就需要看ups电源设计的原理&#xff0c;不同厂家设计…

poj 2031Building a Space Station(几何判断+Kruskal最小生成树)

1 /*2 最小生成树 几何判断3 Kruskal 球心之间的距离 - 两个球的半径 < 0 则说明是覆盖的&#xff01;此时的距离按照0计算 4 */5 #include<iostream>6 #include<cstdio>7 #include<cstring>8 #include<cmath>9 #include<algorithm>…

华为怎么用手机看时间到读秒_华为手机灭屏也可以看时间?其实设置方法很简单,不会有些可惜了...

华为作为手机界名副其实的大佬&#xff0c;而且华为手机的口碑也是非常不错的。那么为什么会有这么多人喜欢华为手机呢&#xff1f;主要是华为手机的质量高&#xff0c;并且用很多实用的小功能&#xff0c;比如说神奇的灭屏显示功能等等&#xff0c;今天就给大家分享几个华为手…

将数据转化成字符串时:用字符串的链接 还是 StringBuilder

/*目的&#xff1a;将数据转化成字符串时&#xff1a;用字符串的链接 还是 StringBuilder呢&#xff1f; */ public class Test{public static void main(String[] args){int[] arr{1,2,4,5};System.out.println(arrayToString(arr));}/* public static String arrayToString(…

html频谱跳动效果,HTML5音频可视化频谱跳动代码

HTML5音频可视化频谱跳动代码*{margin:0;padding:0;}#canvas {display: block;background: linear-gradient(135deg, rgb(142, 13, 133) 0%, rgb(230, 132, 110) 100%);}window.οnclickfunction () {if(oAudio.paused) {oAudio.play();}else{oAudio.pause();}}//创建音频上下文…

hive转16进制unhex_Java 进制的转换

什么是进制&#xff1f;进制也就是进位计数制&#xff0c;是人为定义的带进位的计数方法(有不带进位的计数方法&#xff0c;比如原始的结绳计数法&#xff0c;唱票时常用的“正”字计数法&#xff0c;以及类似的tally mark计数)。 对于任何一种进制---X进制&#xff0c;就表示每…

html中css二级联动,html二级联动学习笔记

DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">http://www.cnblogs.com/whgw/archive/2012/05/11/2496667.htmlJquery的select操作集合jQuery获取Select选择的Text和Value: 语法解释&#xff1a; 1. $("#select_id").change(function()…