給定t組資料,每組資料有n個點和m條單向邊。每個點有乙個值,邊的權值即為終點的值減去起點值得三次方,求出從起點開始到每個點得最小權值和。(由題意可知,圖中有負邊權,即有得點可能達不到,或者是處於負環路上。)如果某個點不能達到或者是處於負環路,則輸出「?」。
第一行輸入 t,表明共有 t 組資料。(1 <= t <= 50)。對於每一組資料,第一行輸入 n,表示點的個數。(1 <= n <= 200)第二行輸入 n 個整數,表示 1 ~ n 點的權值 a[i]。(0 <= a[i] <= 20) 第三行輸入 m,表示有向道路的條數。(0 <= m <= 100000) 接下來 m 行,每行有兩個整數 a b,表示存在一條 a 到 b 的有向道路。接下來給出乙個整數 q,表示詢問個數。(0 <= q <= 100000)每一次詢問給出乙個 p,表示求 1 號點到 p 號點的最少稅費。
樣例:
2
56 7 8 9 10
61 2
2 33 4
1 55 4
4 5245
101 2 4 4 5 6 7 8 9 10
101 2
2 33 1
1 44 5
5 66 7
7 88 9
9 10
23 10
每個例子輸出乙個case i: 每個詢問輸出一行,如果不可達或稅費小於 3 則輸出 『?』。
樣例:
case 1:34
case 2:
??
首先根據題意肯定是求最短路徑得題目,然後邊權是隱式給出得,根據題目,可知,邊權中有負邊,故需要用spfa演算法來計算。即從起點開始,進行一邊spfa演算法,演算法和dij演算法相似,多了乙個cnt陣列來儲存到達每乙個點的時候所走的邊的數量。其餘更新dis的路徑長度和dij演算法相似。在更新時,同步更新cnt。同時易知,在n個點的圖中,若到達任一點所走的邊數如果大於n,則一定是有負環路。則在此處,對所有在負環路上和負環路所影響的點都不能正確到達。即這些點要輸出「?」。即對出現這種點的時候,從這個點開始進行一遍bfs,標記這個點所能到達的所有的點,(我標記為-1),此後在查詢輸出的時候,若這個點的dis值無窮大,說明不能到達這個點,若這個點的值小於3,(此題認為小於3即不符合要求),同樣輸出「?」,其餘的輸出查詢所得的dis值即可。
#include
#include
#include
#include
#include
#include
using namespace std;
const int inf = 1e8;
int t,n,m,q,p;
bool vis[205]
; //記錄當前是否在佇列中
int dis[205]
; //花費
int cnt[205]
; //記錄邊數
int a[205]
; //每個點的值
struct edge e[200010]
;int head[205]
;int tot;
queue q; //最大堆
void add_edge(int t, int f, int w)
queue q2;
bool vis2[205]
; void bfs(int x)
i = e[i].next;}}
}void spfa(
) dis[1]
= 0, vis[1]
=1; q.push(1)
;while
(q.size(
))else if(dis[t1]
!=-1 && vis[t1]
==0)
} i = e[i].next;}}
}int main()
cin>>m;
int x,y;
for(int j=1;j<=m;j++)
spfa();
cout<<
"case "
<":">q;
for(int j=0;jelse}}
return 0;
}
程式設計思維與實踐 Week7 作業
眾所周知,tt 有乙隻魔法貓。這一天,tt 正在專心致志地玩 貓和老鼠 遊戲,然而比賽還沒開始,聰明的魔法貓便告訴了 tt 比賽的最終結果。tt 非常詫異,不僅詫異於他的小貓咪居然會說話,更詫異於這可愛的小不點為何有如此魔力?魔法貓告訴 tt,它其實擁有一張遊戲勝負表,上面有 n 個人以及 m 個勝...
程式設計思維與實踐 Week2 作業
b題 倒水問題 bfs 東東有一張地圖,想通過地圖找到妹紙。地圖顯示,0表示可以走,1表示不可以走,左上角是入口,右下角是妹紙,這兩個位置保證為0。既然已經知道了地圖,那麼東東找到妹紙就不難了,請你編乙個程式,寫出東東找到妹紙的最短路線。input 輸入是乙個5 5的二維陣列,僅由0 1兩數字組成,...
程式設計思維與實踐 Week3 作業
b 區間選點 貪心 c 區間覆蓋問題 貪心 給出n個正數,從其中選出k個數,使其總和為s,問 有多少種選數方案?input 第一行是正數t t 100 表示測試的組數。每一組都輸入兩行,第一行是三個整數n,k,s,第二行是n個正整數。output 每一組輸出結果佔一行,為方案的數目。sample i...