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.pswp.cn/news/531854.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531854.shtml
英文地址,請注明出處:http://en.pswp.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()…