這一晚,tt 做了個美夢!在夢中,tt 的願望成真了,他成為了喵星的統領!喵星上有 n 個商業城市,編號 1 ~ n,其中 1 號城市是 tt 所在的城市,即首都。
喵星上共有 m 條有向道路供商業城市相互往來。但是隨著喵星商業的日漸繁榮,有些道路變得非常擁擠。正在 tt 為之苦惱之時,他的魔法小貓咪提出了乙個解決方案!tt 欣然接受並針對該方案頒布了一項新的政策。
具體政策如下:對每乙個商業城市標記乙個正整數,表示其繁榮程度,當每乙隻喵沿道路從乙個商業城市走到另乙個商業城市時,tt 都會收取它們(目的地繁榮程度 - 出發地繁榮程度)^ 3 的稅。
tt 打算測試一下這項政策是否合理,因此他想知道從首都出發,走到其他城市至少要交多少的稅,如果總金額小於 3 或者無法到達請悄咪咪地打出 『?』。
input根據題意知,這是乙個求單源點最短路的問題,但是這個問題中可能會涉及到負權邊,所以不可以使用dijkstra演算法來實現,這裡我們就可以使用spfa來實現。第一行輸入 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 號點的最少稅費。
output
每個詢問輸出一行,如果不可達或稅費小於 3 則輸出 『?』。
sample input25
6 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
sample output
case 1:34
case 2:??
在spfa演算法中,我們首先初始化,然後每次從佇列中取出乙個點,然後對這個點的鄰接點進行鬆弛,然後判斷這個點是不是負環中的點,如果是就跳過這個點。當n個點都經過之後,就說明存在負環,我們可以通過dfs的方法找出負環,並標記。
#include
#include
#include
#include
#define _for(i,a,b) for(int i = (a); i < (b); i++)
#define _rep(i,a,b) for(int i = (a); i <= (b); i++)
using
namespace std;
const
int maxn =
210;
const
int maxm =
100010
;const
int inf =
500000
;int t,n,m,a,b,q,p,tot;
int a[maxn]
;int head[maxn]
,vis[maxn]
,dis[maxn]
,num[maxn]
,inq[maxn]
;queue<
int> q;
struct edgeed[maxm]
;void
add_edge
(int u,
int v,
int w)
void
dfs(
int s)
//遍歷
}void
spfa
(int s)}}
}}intmain()
spfa(1
);cout <<
"case "
<< i <<
":"<< endl;
cin >> q;
while
(q--
)else cout <<
"?"<< endl;}}
}
week7 作業C TT的美夢
這一晚,tt 做了個美夢!在夢中,tt 的願望成真了,他成為了喵星的統領!喵星上有 n 個商業城市,編號 1 n,其中 1 號城市是 tt 所在的城市,即首都。喵星上共有 m 條有向道路供商業城市相互往來。但是隨著喵星商業的日漸繁榮,有些道路變得非常擁擠。正在 tt 為之苦惱之時,他的魔法小貓咪提出...
week7作業題 B TT 的旅行日記
眾所周知,tt 有乙隻魔法貓。今天他在 b 站上開啟了一次旅行直播,記錄他與魔法貓在喵星旅遊時的奇遇。tt 從家裡出發,準備乘坐貓貓快線前往喵星機場。貓貓快線分為經濟線和商業線兩種,它們的速度與價錢都不同。當然啦,商業線要比經濟線貴,tt 平常只能坐經濟線,但是今天 tt 的魔法貓變出了一張商業線車...
程式設計Week7 C TT的美夢
有n個城市,編號為1 n,每個城市有乙個繁榮程度,從城市a走到城市b,需要收取 b繁榮的 a繁榮度 3的稅,求從首都出發,到其他城市要交多少稅,若小於3或無法到達輸出 第一行輸入 t,表明共有 t 組資料。1 t 50 對於每一組資料,第一行輸入 n,表示點的個數。1 n 200 第二行輸入 n 個...