CODEVS 1001 舒適的路線

2021-09-13 03:57:03 字數 1543 閱讀 7786

z小鎮是乙個景色宜人的地方,吸引來自各地的觀光客來此旅遊觀光。

z小鎮附近共有

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

接下來的m行每行包含三個正整數:x,y和v(1≤x,y≤n,0 最後一行包含兩個正整數s,t,表示想知道從景點s到景點t最大最小速度比最小的路徑。s和t不可能相同。

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

樣例1

4 21 2 1

3 4 2

1 4樣例2

3 31 2 10

1 2 5

2 3 8

1 3樣例3

3 21 2 2

2 3 4

1 3樣例1

impossible

樣例2

5/4樣例3

2n(1m(0vi在int範圍內

看到這題,第一反應,嚯,這不乙個dfs剪枝完事兒嗎。

下場不談了,我記得第2個點大概是6000ms吧。

然後開啟標籤,並。。並查集?

就真就列舉唄?

成了,列舉。

順便,知道不路徑壓縮的後果嗎?

第2個點2500ms。

#include #include #include #include using namespace std;

const int inf=0x3f3f3f3f;

int n,m;

struct edge;

//edge (int x,int y,int z): cs(x), ct(y), v(z){};

};bool cmp(const edge a,const edge b)

}int main()

//每次更新最小值

cmin=edge[j].v;

//並操作

unionopt(edge[j].cs,edge[j].ct);

//這東西沒什麼用,就是為了正常呼叫find,可以忽略掉

int t1=0,t2=0;

//判斷目的地合併情況

if (find(s,t1)==find(t,t2))

//剪枝,已有別的情況且當前比值更大可以剪去

if (flag&&(cmax*1.0/cmin)>=(max*1.0/min)) break;

} if (hasfind)

if (!flag||(cmax*1.0/cmin)<(max*1.0/min))

} //輸出操作

if (!flag)

if ((max%min)==0)

int fac=factor(max,min);

printf ("%d/%d",max/fac,min/fac);

return 0;

}

codevs 1001 舒適的路線

codevs 1001 舒適的路線 題目描述 description z小鎮是乙個景色宜人的地方,吸引來自各地的觀光客來此旅遊觀光。z小鎮附近共有 n 1 n 500 個景點 編號為1,2,3,n 這些景點被m 0 m 5000 條道路連線著,所有道路都是雙向的,兩個景點之間可能有多條道路。也許是為...

1001 舒適的路線

2006年 時間限制 2 s 空間限制 128000 kb 題目等級 鑽石 diamond 題解檢視執行結果 z小鎮是乙個景色宜人的地方,吸引來自各地的觀光客來此旅遊觀光。z小鎮附近共有 n 1輸入描述 input description 第一行包含兩個正整數,n和m。接下來的m行每行包含三個正整數...

CODEVS 1041Car的旅行路線

我在此 的基礎上做進一步的說明解釋。include include include include include using namespace std const double oo 10000000 城市的飛機場 x 1 4 1代表第x個城市開始的飛機場下標 define ctoa x x 1...