首页 > 其他分享 >BZOJ 3402: [Usaco2009 Open]Hide and Seek 捉迷藏 最短路

BZOJ 3402: [Usaco2009 Open]Hide and Seek 捉迷藏 最短路

时间:2023-07-07 13:36:39浏览次数:47  
标签:ch Hide int 牛棚 Usaco2009 tail read include Seek



3402: [Usaco2009 Open]Hide and Seek 捉迷藏


Time Limit: 3 Sec  Memory Limit: 128 MB

Submit: 213  Solved: 167

[Submit][Status][Discuss]

Description


    贝茜在和约翰玩一个“捉迷藏”的游戏.



    她正要找出所有适合她躲藏的安全牛棚.一共有N(2≤N≤20000)个牛棚,被编为1到N号.她知道约翰(捉牛者)从牛棚1出发.所有的牛棚由M(1≤M≤50000)条双向路连接,每条双向路连接两个不同的牛棚.所有的牛棚都是相通的.贝茜认为同牛棚1距离最远的的牛棚是安全的.两个牛棚间的距离是指,从一个牛棚到另一个牛棚最少需要通过的道路数量.请帮贝茜找出所有的安全牛棚.


Input


    第1行输入两个整数N和M,之后M行每行输入两个整数,表示一条路的两个端点.



   


Output


 仅一行,输出三个整数.第1个表示安全牛棚(如果有多个,输出编号最小的);第2个表示牛棚1和安全牛棚的距离;第3个表示有多少个安全的牛棚.


Sample Input


6 7
3 6
4 3
3 2
1 3
1 2
2 4
5 2


Sample Output


4 2 3




这明明是应该BFS的

然而,还是写spfa吧。。。。

睡觉之前开心刷水,1A啦啦啦


#include<cmath>
#include<ctime>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<complex>
#include<iostream>
#include<algorithm>
#include<iomanip>
#include<vector>
#include<string>
#include<queue>
#include<set>
#include<map>
using namespace std;
inline int read()
{
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch<='9'&&ch>='0'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
	return x*f;
}
const int N=20010;
int n,m,ecnt,last[N],dis[N],q[N];
bool inq[N];
struct EDGE{int to,nt,val;}e[N<<3];
inline void readd(int u,int v)
{e[++ecnt]=(EDGE){v,last[u],1};last[u]=ecnt;}
inline void add(int u,int v){readd(u,v);readd(v,u);}
void spfa()
{
	memset(dis,0X3f,sizeof(dis));
	dis[1]=0;int head=0,tail=1;q[head]=1;
	while(head!=tail)
	{
		int u=q[head++];if(head==N-1)head=0;inq[u]=0;
		for(int i=last[u];i;i=e[i].nt)
		if(dis[e[i].to]>dis[u]+e[i].val)
		{
			dis[e[i].to]=dis[u]+e[i].val;
			if(!inq[e[i].to]){inq[e[i].to]=1,q[tail++]=e[i].to;if(tail==N-1)tail=0;}
		}
	}
}
int main()
{
	n=read();m=read();int u,v,sum=0;
	for(int i=1;i<=m;i++){u=read();v=read();add(u,v);}
	spfa();u=0,v=0;
	for(int i=1;i<=n;i++)if(u<dis[i])u=dis[i];
	for(int i=1;i<=n;i++)if(u==dis[i]){if(!v)v=i;sum++;}
	printf("%d %d %d\n",v,u,sum);
	return 0;
}




标签:ch,Hide,int,牛棚,Usaco2009,tail,read,include,Seek
From: https://blog.51cto.com/u_16181403/6651998

相关文章

  • lseek函数详解
    1、用lseek计算文件长度ret=lseek(fd,0,SEEK_END);返回值是文件指针距离文件开头的偏移量,也就是文件的长度2、用seek构建空洞文件1、空洞文件就是文件中有一段是空的2、普通文件中间是不能有空的,因为我们write时文件指针是依次从前向后去移动的,不可能绕过前面的直接......
  • BUUCTF:[HCTF 2018]Hide and seek
    BUUCTF:[HCTF2018]Hideandseek参考:https://www.jianshu.com/p/d20168da7284先随便输入账号密码登录提示我们上传zip文件上传一个文件压缩后的zip,输出了文件压缩前的内容可能是有文件读取,我们创建一个软链接(类似windows的快捷方式)指向一个服务器上的文件,试试看能不能读取root@......
  • 系统调用IO-11-read,write,lseek及mycpy的实现
    1.概述readNAMEread-readfromafiledescriptorSYNOPSIS#include<unistd.h>//从fd中读,读到buf中去,读count个字节ssize_tread(intfd,void*buf,size_tcount);DESCRIPTIONread()attemptstoreaduptocountbytesfrom......
  • Android SeekBar的使用
    AndroidSeekBar的使用  <?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="......
  • 关于文件处理中的文件指针调动操作 fseek( )
    #include<stdio.h>fseek(FILE*STREAM,    LONGOFSET,    INTORIGIN);      文件指针/文件流   偏移量            起始位置 FILE*fp;1.将文件指针从文件开头向右移动n个字节,fseek(fp, n, SEEK_SET)  ......
  • 支付宝小程序 hideTabBar 无效,出现两个 TabBar
    问题描述:使用uni-app开发的小程序,使用组件的形式做了自定义TabBar,在部分支付宝小程序中出现了两个TabBar在支付宝小程序的开发社区中也有类似问题的反馈《hideTabBarIOS失效,模拟器和安卓正常》《真机上调用my.hideTabBar无效》《tabbar隐藏在特殊情况下无效的问题》 ......
  • wordpress插件:用Hide Page And Post Title插件隐藏页面标题(wordpress 6.2)
    一,安装插件:安装完成后点击启用按钮启用后如图:二,隐藏页面标题效果:说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest     对应的源码可以访问这里获取: https://github.com/liuhongdi/     或: https://g......
  • Android开发-Android常用组件-SeekBar拖动条
    4.9 SeekBar拖动条android:max滑动条的最大值android:progress滑动条的当前值android:secondaryProgress二级滑动条的进度android:thumb滑块的drawable 接着要说下SeekBar的事件了,SeekBar.OnSeekBarChangeListener我们只需重写三个对应......
  • Firefox Tree Style Tab extension & hide native tabs
    地址栏空白处右键CustomizeToolbar...,勾选Titlebar安装TreeStyleTab扩展在地址栏输入about:config搜索toolkit.legacyUserProfileCustomizations.stylesheets改为true在地址栏输入about:support搜索ProfileDirectory,OpenDirectory打开路径新建chrome文件夹,文件夹下新建......
  • 微信小程序登录页左上角的home图标如何隐藏?wx.hideHomeButton()不生效?
    在做微信小程序时,我们一般都会在app.js中去判断当前用户是否已经登录,如果已经登录,会直接跳转到小程序的首页。如果未登录那么直接跳转登录页。此时我们需要把首页首页作为......