「咚咚咚……」「查水表!」原來是查水表來了,現在**找這麼熱心上門的查表員啊!小明感動的熱淚盈眶,開起了門……
媽媽下班回家,街坊鄰居說小明被一群陌生人強行押上了警車!媽媽豐富的經驗告訴她小明被帶到了t區,而自己在s區。
該市有m條大道連線n個區,一條大道將兩個區相連線,每個大道有乙個擁擠度。小明的媽媽雖然很著急,但是不願意擁擠的人潮衝亂了她優雅的步伐。所以請你幫她規劃一條從s至t的路線,使得經過道路的擁擠度最大值最小。
輸入格式:
第一行四個數字n,m,s,t。
接下來m行,每行三個數字,分別表示兩個區和擁擠度。
(有可能兩個區之間有多條大道相連。)
輸出格式:
輸出題目要求的擁擠度。
輸入樣例#1:
3 3 1 31 2 2
2 3 1
1 3 3
輸出樣例#1:
2
資料範圍
30% n<=10
60% n<=100
100% n<=10000,m<=2n,擁擠度<=10000
題目保證1<=s,t<=n且s<>t,保證可以從s區出發到t區。
樣例解釋:
小明的媽媽要從1號點去3號點,最優路線為1->2->3。
1.二分擁擠度+spfa驗證
屠龍寶刀點選就送
#include #include#include
#include
#define n 20005
using
namespace
std;
inline
void read(int &x)
struct
edge
edge[n
<<1],*head[n];
bool
vis[n];
intsumedge,cnt[n],n,m,s,t,dis[n];
inline
void ins(int u,int v,int
w)bool check(int
limit)}}
}return dis[t]!=0x3f3f3f3f;}
intmain()
intans;
for(int l=0,r=0x3f3f3f3f,mid;l<=r;)
printf(
"%d\n
",ans);
return0;
}
2 spfa
#include #include#include
#include
#define n 20005
using
namespace
std;
inline
void read(int &x)
struct
edge
edge[n
<<1],*head[n];
bool
vis[n];
intsumedge,cnt[n],n,m,s,t,dis[n];
inline
void ins(int u,int v,int
w)void
spfa()}}
}}int
main()
spfa();
printf(
"%d\n
",dis[t]);
return0;
}
3 最小生成樹 **來自zsq
#include#include#include
#include
#include
#define n 100100
using
namespace
std;
intx,y,z,n,m,s,t,ans,fa[n];
struct
edge
edge[n];
intread()
while(ch>='
0'&&ch<='9')
return x*f;
}int
cmp(edge a,edge b)
int find(int
x)int
main()
for(int i=1;i<=n;i++) fa[i]=i;
sort(edge+1,edge+1+m,cmp);
for(int num=0,i=1;i<=m;i++)
printf("%d
",ans);
return0;
}
洛谷 P1396 營救
題目描述 咚咚咚 查水表!原來是查水表來了,現在 找這麼熱心上門的查表員啊!小明感動的熱淚盈眶,開起了門 媽媽下班回家,街坊鄰居說小明被一群陌生人強行押上了警車!媽媽豐富的經驗告訴她小明被帶到了t區,而自己在s區。該市有m條大道連線n個區,一條大道將兩個區相連線,每個大道有乙個擁擠度。小明的媽媽雖然...
洛谷 P1396 營救
題目描述 咚咚咚 查水表!原來是查水表來了,現在 找這麼熱心上門的查表員啊!小明感動的熱淚盈眶,開起了門 媽媽下班回家,街坊鄰居說小明被一群陌生人強行押上了警車!媽媽豐富的經驗告訴她小明被帶到了t區,而自己在s區。該市有m條大道連線n個區,一條大道將兩個區相連線,每個大道有乙個擁擠度。小明的媽媽雖然...
洛谷P1396 營救
咚咚咚 查水表!原來是查水表來了,現在 找這麼熱心上門的查表員啊!小明感動的熱淚盈眶,開起了門 媽媽下班回家,街坊鄰居說小明被一群陌生人強行押上了警車!媽媽豐富的經驗告訴她小明被帶到了t區,而自己在s區。該市有m條大道連線n個區,一條大道將兩個區相連線,每個大道有乙個擁擠度。小明的媽媽雖然很著急,但...