「咚咚咚……」「查水表!」原來是查水表來了,現在**找這麼熱心上門的查表員啊!小明感動的熱淚盈眶,開起了門……
媽媽下班回家,街坊鄰居說小明被一群陌生人強行押上了警車!媽媽豐富的經驗告訴她小明被帶到了t區,而自己在s區。
該市有m條大道連線n個區,一條大道將兩個區相連線,每個大道有乙個擁擠度。小明的媽媽雖然很著急,但是不願意擁擠的人潮衝亂了她優雅的步伐。所以請你幫她規劃一條從s至t的路線,使得經過道路的擁擠度最大值最小。
輸入格式:
第一行四個數字n,m,s,t。
接下來m行,每行三個數字,分別表示兩個區和擁擠度。
(有可能兩個區之間有多條大道相連。)
輸出格式:
輸出題目要求的擁擠度。
輸入樣例#1:
3 3 1 3輸出樣例#1:1 2 2
2 3 1
1 3 3
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.克魯斯卡爾,生成樹
2.二分答案+spfa
#include#include二分答案+bfs#include
using
namespace
std;
int n,m,l=0x7fffffff,r=0,s,t,head[10010],num,ans=0x7fffffff
;struct
nodee[
40010
];void insert(int
from,int to,int
v)int q[10010
],h,t;
bool vis[10010
];bool check(int
limit)
}return0;
}int
main()
while(l<=r)
printf(
"%d\n
",ans);
return0;
}
#include#include克魯斯卡爾#include
using
namespace
std;
#define maxn 10010
struct
nodee[maxn*4
];int
n,m,s,t,fa[maxn];
int cmp(node x,node y)
int find(int
x)int
main()
sort(e+1,e+m+1
,cmp);
for(int i=1;i<=n;i++)fa[i]=i;
for(int i=1;i<=m;i++)
f1=find(s);f2=find(t);
if(f1==f2)}}
#include#include二分答案+spfa#include
#include
using
namespace
std;
#define maxn 10010
int n,m,s,t,num,head[maxn*2
],ans,dis[maxn];
struct
nodee[maxn*4
];bool
vis[maxn];
void insert(int
from,int to,int
v)bool check(int
x) }}}
if(dis[t]>x)return0;
else
return1;
}int
main()
while(l<=r)
printf("%d
",ans);
}
洛谷 P1396 營救
題目描述 咚咚咚 查水表!原來是查水表來了,現在 找這麼熱心上門的查表員啊!小明感動的熱淚盈眶,開起了門 媽媽下班回家,街坊鄰居說小明被一群陌生人強行押上了警車!媽媽豐富的經驗告訴她小明被帶到了t區,而自己在s區。該市有m條大道連線n個區,一條大道將兩個區相連線,每個大道有乙個擁擠度。小明的媽媽雖然...
洛谷 P1396 營救
題目描述 咚咚咚 查水表!原來是查水表來了,現在 找這麼熱心上門的查表員啊!小明感動的熱淚盈眶,開起了門 媽媽下班回家,街坊鄰居說小明被一群陌生人強行押上了警車!媽媽豐富的經驗告訴她小明被帶到了t區,而自己在s區。該市有m條大道連線n個區,一條大道將兩個區相連線,每個大道有乙個擁擠度。小明的媽媽雖然...
洛谷P1396 營救
咚咚咚 查水表!原來是查水表來了,現在 找這麼熱心上門的查表員啊!小明感動的熱淚盈眶,開起了門 媽媽下班回家,街坊鄰居說小明被一群陌生人強行押上了警車!媽媽豐富的經驗告訴她小明被帶到了t區,而自己在s區。該市有m條大道連線n個區,一條大道將兩個區相連線,每個大道有乙個擁擠度。小明的媽媽雖然很著急,但...