日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

codility上的问题(26) Hydrogenium 2013

發布時間:2025/7/25 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 codility上的问题(26) Hydrogenium 2013 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目,挺無聊的。一個裸的最短路。n個點,你住在0,要去買東西,每個點有一個關門時間,問能最早買到食物的時間。有兩點注意 (1)有重邊 (2) 原圖是dicrect連接。。。但不是有向邊,被這個誤導了。direct當直接講……原圖無向圖。后面就是裸的dijkstra算法。

數據范圍 點 N [0..100] 不知道為啥還有0.。。。

? ? ? ? ? ? ? ? ?連邊 數 M [1..10000]

連邊按3元祖給書 A 里面數據范圍 ?[0..99] B 里面數據范圍 [0..99]是節點 C [0..10^5]表示從A到B的時間

還有一個長度為N的數組D,表示關門時間,數值范圍 [-1..10^9]表示關門時間,-1表示已經關門了。

返回能買到食品的最早時間,買不到輸出-1。

要求復雜度 時間 O(N^2) 空間 O(N^2)。


?

// you can also use includes, for example: // #include <algorithm>int solution(const vector<int> &A, const vector<int> &B, const vector<int> &C, const vector<int> &D) {// write your code here...int n = D.size(),i,ind,m = A.size();if ((n == 0) || (D[0] >= 0)) {return 0;}vector<vector<int> > e;e.resize(n);for (i = 0; i < n; ++i) {e[i].resize(n, -1);}for (i = 0; i < m; ++i) {if ((e[A[i]][B[i]] < 0) || (e[A[i]][B[i]] > C[i])) {e[A[i]][B[i]] = e[B[i]][A[i]] = C[i];}}vector<bool> mark;mark.resize(n, false);vector<int> d;d.resize(n, -1);d[0] = 0;for (;;) {ind = -1;for (i = 0; i < n; ++i) {if ((!mark[i]) && (d[i] >= 0) && ((ind < 0) || (d[ind] > d[i]))) {ind = i;}}if (ind < 0) {break;}if (d[ind] <= D[ind]) {return d[ind];} mark[ind] = true;for (i = 0; i < n; ++i) {if ((!mark[i]) && (e[ind][i] >= 0) && ((d[i] < 0) || (d[i] > d[ind] + e[ind][i]))) {d[i] = d[ind] + e[ind][i];}}}return -1; }


?

?

轉載于:https://www.cnblogs.com/pangblog/p/3285861.html

總結

以上是生活随笔為你收集整理的codility上的问题(26) Hydrogenium 2013的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。