牛客練習賽17 E 求長度(spfa 狀壓dp)

2021-08-20 04:39:23 字數 1073 閱讀 7309

給定一幅n個點m條邊的圖和s個一定要經過的點,問從0號點出發,經過這s個點再回到0號點的最短路徑長度是多少。

第一行乙個整數t(t <= 2)表示資料組數。

對於每組資料,第一行兩個整數n,m表示點數和邊數(1 <= n, m <= 100,000)。

接下來m行,每行三個整數x, y, z(0 < x, y < n, 0 <= z <= 1000)表示xy之間有一條長度為c的雙向邊;

接下來乙個整數s。(s<=10)

接下來s行每行乙個整數表示一定要經過的點。

資料保證有解。

t行,每行乙個整數表示答案。
題解:

#include#include#include#include#includeusing namespace std;

int n,m,s,b[15],dis[15][100005],dp[1<<12][15],f[15];

struct node

a[100005];

queuet;

vectorq[100005];

void spfa(int st)

} }}int main(void)

scanf("%d",&s);

for(int i=1;i<=s;i++)

spfa(0);

for(int i=0;i<=s;i++)

dp[1<100000000) continue;

for(int k=0;k<=s;k++)

dp[i|(1<

}} printf("%d\n",dp[(1<

for(int i=1;i<=n;i++)

q[i].clear();

} return 0;}/*

14 6

0 1 1

1 2 1

2 3 1

3 0 1

0 2 5

1 3 531

23*/

牛客20180601練習賽19 E

已知第i個瓶子的品牌為ai,且其能開啟bi品牌的瓶子.問有幾瓶飲料托公尺無法喝到.被用於開啟飲料瓶的瓶子不一定需要被開啟.乙個瓶子不能開啟其本身.輸入描述 第一行乙個整數n,表示飲料的瓶數.接下來n行,每行兩個整數ai,bi.輸出描述 輸出一行乙個整數,表示小托公尺無法喝到的飲料瓶數.示例1 輸入 ...

牛客網練習賽24 E青蛙

有乙隻可愛的老青蛙,在路的另一端發現了乙個黑的東西,想過去一 竟。於是便開始踏上了旅途 一直這個小路上有很多的隧道,從隧道的a進入,會從b出來,但是隧道不可以反向走。這只青蛙因為太老了,所以很懶,現在想請你幫幫慢,問他最少需要幾步才可以到達對面。將小徑看作一條數軸,青蛙初始在0上,這只青蛙可以向前跳...

牛客練習賽9

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 珂朵莉想每天都給威廉送禮物,於是她準備了n個自己的本子 她想送最多的天數,使得每天至少送乙個本子,但是相鄰兩天送的本子個數不能相同 珂朵莉最多送幾天禮物呢 第一行乙個整...