洛谷——P1396 营救
P1396 营救
题目描述
“咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门……
妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小明被带到了t区,而自己在s区。
该市有m条大道连接n个区,一条大道将两个区相连接,每个大道有一个拥挤度。小明的妈妈虽然很着急,但是不愿意拥挤的人潮冲乱了她优雅的步伐。所以请你帮她规划一条从s至t的路线,使得经过道路的拥挤度最大值最小。
输入输出格式
输入格式:
第一行四个数字n,m,s,t。
接下来m行,每行三个数字,分别表示两个区和拥挤度。
(有可能两个区之间有多条大道相连。)
输出格式:
输出题目要求的拥挤度。
输入输出样例
3 3 1 3 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。
这道题竟然可以用最小生成树做,他只问最小拥挤度,但没问总的最小拥挤度,所以就可以用最小生成树水过、、、
但在最后面要加上一小句话:
if(num==n-1||find(s)==find(t)) break;//判断如果s与t已经连通的话,那么就结束加边 同样这个题用最短路,spfa也可以照样水过。、。。裸地spfa,就是把求最短路之和改成求最大值就好了、、、
代码:
最小生成树
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 100100
using namespace std;
int x,y,z,n,m,s,t,ans,num,fa[N];
struct Edge
{
int x,y,z;
}edge[N];
int read()
{
,f=; char ch=getchar();
; ch=getchar();}
+ch-'; ch=getchar();}
return x*f;
}
int cmp(Edge a,Edge b)
{
return a.z<b.z;
}
int find(int x)
{
if(x==fa[x]) return x;
fa[x]=find(fa[x]);
return fa[x];
}
int main()
{
n=read(),m=read(),s=read(),t=read();
;i<=m;i++)
{
x=read(),y=read(),z=read();
edge[i].x=x;
edge[i].y=y;
edge[i].z=z;
}
;i<=n;i++) fa[i]=i;
sort(edge+,edge++m,cmp);
;i<=m;i++)
{
x=edge[i].x,y=edge[i].y;
int fx=find(x),fy=find(y);
if(fx==fy) continue;
fa[fx]=fy;num++;
ans=max(ans,edge[i].z);
||find(s)==find(t)) break;
}
printf("%d",ans);
;
}
最短路:
#include<queue>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define N 200000
#define maxn 99999999LL
using namespace std;
int n,m,x,y,z,s,t,tot;
int dis[N],head[N];
struct Edge
{
int from,to,dis,next;
}edge[N];
void add(int x,int y,int z)
{
tot++;
edge[tot].to=y;
edge[tot].dis=z;
edge[tot].next=head[x];
head[x]=tot;
}
int read()
{
,f=; char ch=getchar();
; ch=getchar();}
+ch-'; ch=getchar();}
return x*f;
}
int spfa(int s)
{
queue<int>q;bool vis[N];
;i<=n;i++) dis[i]=maxn,vis[i]=false;
q.push(s),vis[s]=;
while(!q.empty())
{
int x=q.front();q.pop();
for(int i=head[x];i;i=edge[i].next)
{
int t=edge[i].to;
if(dis[t]>max(dis[x],edge[i].dis))
{
dis[t]=max(dis[x],edge[i].dis);
if(!vis[t])
{
vis[t]=true;
q.push(t);
}
}
}
vis[x]=false;
}
}
int main()
{
n=read(),m=read(),s=read(),t=read();
;i<=m;i++)
{
x=read(),y=read(),z=read();
add(x,y,z);
add(y,x,z);
}
spfa(s);
printf("%d",dis[t]);
}
洛谷——P1396 营救的更多相关文章
- 洛谷 P1396 营救
题目链接 https://www.luogu.org/problemnew/show/P1396 题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪 ...
- 洛谷P1396 营救 题解
题目:https://www.luogu.org/problemnew/show/P1396 分析: 这其实一看就是一个最短路的近似模板的题目,但我们要注意到两个区之间可能会有多条道路,所以说我们只需 ...
- 洛谷P1396 营救
题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门…… 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小 ...
- 洛谷P1396营救(最小生成树)
题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门…… 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小 ...
- 营救(洛谷 P1396)
题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门…… 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小 ...
- 洛谷 P1396
P1396 传送门 扯些题外话 讲真的我刚看到这个题的时候真的傻fufu的..... 大体题意 找出从s走到t的拥挤度最大值最小.. 思路 说最大值最小可能就会有dalao开始二分了. 想我这种的蒟蒻 ...
- 【洛谷P4542】 [ZJOI2011]营救皮卡丘(费用流)
洛谷 题意: 给出\(n\)个点,\(m\)条边,现在有\(k,k\leq 10\)个人从\(0\)号点出发前往\(n\)点. 规定若某个人想要到达\(x\)点,则\(1\)~\(x-1\)号点都有人 ...
- 【洛谷4542】 [ZJOI2011]营救皮卡丘(最小费用最大流)
传送门 洛谷 Solution 这是一道神仙题! 考虑这个东西是个啥. emmm,如果两个点要到达,一定不能经过比他们大的. 所以Floyd搞定两点距离然后费用流跑一遍就是答案了! 代码实现 /* m ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
随机推荐
- EditText(3)输入时自动完成功能
在android输入自动完成功能由EditText的子类 AutoCompleteTextView 实现.如下: 1,在xml中使用 <AutoCompleteTextView android: ...
- ToolBar教程:AppCompatActivity下用toolbar当actionbar用
参考: https://developer.android.com/training/appbar/index.html 1,自定义toolbar主题 2,在布局xml中使用toolbar 3,在代码 ...
- PHP无符号右移与旋转右移
# PHP 无符号右移 仅用于int形, PHP 的int为32位 # // 右移旋转 function rightRoate($int,$n){ $min = intval(PHP_INT_MAX ...
- React组件的防呆机制(propTypes)
Prop验证 随着应用不断变大,为了保证组件被正确使用变得越来越重要.为此我们引入propsTypes.React.PropTypes提供很多验证器(valodator)来验证传入的数据的有效性.当向 ...
- Tornado引入静态css、js文件
一.静态路径 template_path=os.path.join(os.path.dirname(__file__), "templates") 这里是设置了模板的路径,放置模板 ...
- java多线程(线程通信-等待换新机制-代码优化)
等待唤醒机制涉及方法: wait():让线程处于冻结状态,被wait的线程会被存储到线程池中. noticfy():唤醒同一个线程池中一个线程(任意也可能是当前wait的线程) notifyAll() ...
- 定时器tasktimer
1.web.xml中配置 <servlet> <servlet-name>TaskTimer</servlet-name> <servlet-class> ...
- iOS,Core Animation--负责视图的复合功能
简介 UIKit API UIKit是一组Objective-C API,为线条图形.Quartz图像和颜色操作提供Objective-C 封装,并提供2D绘制.图像处理及用户接口级别的动画. ...
- JMeter在linux上分布式压测步骤(二)
哈喽,我又来了~ 前提:三台linux虚拟机,一台作为master,另外两台作为slave. 一.server端 1.修改1099端口,client和server通信的端口,可以不修改,默认就是109 ...
- 设置vscode为中文
设置vscode为中文 ctr+shift+p 输入 configure language 进 en更改为zh-cn , 重启vscode即可 , 如果还不行,就安装插件