旅行 紀中2547 列舉

2021-07-16 13:51:10 字數 1508 閱讀 4386

description

z 小鎮是乙個景色宜人的地方,吸引來自各地的觀光客來此旅遊觀光。z 小鎮附近共有n 個景點(編號為1,2,3,…,n),這些景點被m 條道路連線著,所有道路都是雙向的,兩個景點之間可能有多條道路。也許是為了保護該地的旅遊資源,z 小鎮有個奇怪的規定,就是對於一條給定的公路ri,任何在該公路上行駛的車輛速度必須為vi。

速度變化太快使得遊客們很不舒服,因此從乙個景點前往另乙個景點的時候,大家都希望選擇行使過程中最大速度和最小速度的比盡可能小的路線,也就是所謂最舒適的路線。

input

第一行包含兩個正整數,n 和m。

接下來的m 行每行包含三個正整數:x,y 和v。表示景點x 到景點y 之間有一條雙向公路,車輛必須以速度v 在該公路上行駛。

最後一行包含兩個正整數s,t,表示想知道從景點s 到景點t 最大最小速度比最小的路徑。s 和t 不可能相同。

output

如果景點s 到景點t 沒有路徑,輸出「impossible」。否則輸出乙個數,表示最小的速度比。如果需要,輸出乙個既約分數。

對於100%的資料,1 < n≤500,1≤x,y≤n,0

按邊權排序,列舉邊判斷起點終點是否連通找最優值就好了

c++排序**好!!!!!

#include 

#include

#include

using

namespace

std;

struct edge

;struct answer

;edge e[5010];

int ls[501],f[501];

int maxe=0;

void add(int x,int y,int w);}

bool cmp(edge x,edge y)

int max(int x,int y)

int find(int x)

void merge(int x,int y)

int main()

; scanf("%d%d",&n,&m);

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

int st,ed;

bool flag=false;

scanf("%d%d",&st,&ed);

sort(e+1,e+maxe+1,cmp);

int head=0;

while (head<=maxe)

if (mx/(e[tail].w*1.0)>ans.num)

break;

}if (find(st)==find(ed)&&mx/(mn*1.0)1.0)};

flag=true;} }

if (!flag)

printf("impossible\n");

else

if (ans.a%ans.b)

else

printf("%d\n",ans.a/ans.b);

return

0;}

7 2列舉排列

7.2.1生成1 n 的排列 問題描述 輸入整數n,按照字典序從小到大列印出1 n的去所有排列。兩個序列的字典序大小關係等價於從頭開始第乙個不相同處的大小關係,例如 1,2,3 3,2,1 n 3時,輸出結果是 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 演算法思想 設集...

9 4 列舉型別

乙個變數只有幾種可能的取值,可以一一枚舉出來,變數的取值僅限於列舉的值的有限範圍內,而不適宜用整型 實型 字元型直接表示,c語言提供了這種列舉資料型別。例如,一年的四季有春夏秋冬 乙個星期有星期日 星期一到星期六等。定義列舉型別的一般形式為 enum 列舉型別名 如 enum weekday 1.列...

146 列舉型別

除了簡單的變數型別之外,c 還提供了3個複雜的變數 列舉,結構和陣列。列舉型別的定義 enum 列舉型別的宣告 列舉型別的賦值 在遊戲中我們可以定義乙個int型別來儲存狀態 0 遊戲暫停 1遊戲失敗 2遊戲勝利 3開始選單,但是這樣不容易閱讀,而且容易出錯。這個時候我們通過列舉型別來解決 enum ...