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...