給定一幅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個自己的本子 她想送最多的天數,使得每天至少送乙個本子,但是相鄰兩天送的本子個數不能相同 珂朵莉最多送幾天禮物呢 第一行乙個整...