博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ—— 3402: [Usaco2009 Open]Hide and Seek 捉迷藏
阅读量:4948 次
发布时间:2019-06-11

本文共 2459 字,大约阅读时间需要 8 分钟。

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

HINT

 

Source

 

SPFA 对于一个到达过的点,更新他的最小值,没到达的更新当前值,

记录到达每个点的次数,最后找出最长距离判断判断就好了。

1 #include 
2 #include
3 #include
4 5 inline void read(int &x) 6 { 7 x=0; register char ch=getchar(); 8 for(; ch>'9'||ch<'0'; ) ch=getchar(); 9 for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-'0';10 }11 12 const int M(50005);13 const int N(20005);14 15 int n,m,head[N],sumedge;16 int _v[M<<1],_nex[M<<1];17 inline void ins(int u,int v)18 {19 _v[++sumedge]=v,_nex[sumedge]=head[u];head[u]=sumedge;20 _v[++sumedge]=u,_nex[sumedge]=head[v];head[v]=sumedge;21 }22 23 bool inq[N];24 int dis[N],cnt[N],id[M];25 26 inline void SPFA(int s)27 {28 for(int i=1; i<=n; ++i) dis[i]=-1;29 std:: queue
que;30 dis[s]=0; que.push(s);31 for(int u,v; !que.empty(); )32 {33 u=que.front(); que.pop(); inq[u]=0;34 for(int i=head[u]; i; i=_nex[i])35 {36 if(dis[_v[i]]==-1)37 {38 cnt[_v[i]]++;39 dis[_v[i]]=dis[u]+1;40 if(!inq[_v[i]])41 {42 que.push(_v[i]);43 inq[_v[i]]=true;44 }45 }46 else if(dis[_v[i]]>dis[u]+1)47 {48 cnt[_v[i]]++;49 dis[_v[i]]=dis[u]+1;50 if(!inq[_v[i]])51 {52 que.push(_v[i]);53 inq[_v[i]]=true;54 }55 }56 }57 58 }59 }60 61 int Presist()62 {63 read(n),read(m);64 for(int u,v; m--; )65 read(u),read(v),ins(u,v);66 SPFA(1); int now=-1,pos,num;67 for(int i=1; i<=n; ++i)68 if(dis[i]>now) now=dis[i],pos=i,num=cnt[i];69 printf("%d %d ",pos,now); num=0;70 for(int i=1; i<=n; ++i) num+=(dis[i]==now);71 printf("%d\n",num);72 return 0;73 }74 75 int Aptal=Presist();76 int main(int argc,char**argv){;}

 

转载于:https://www.cnblogs.com/Shy-key/p/7900292.html

你可能感兴趣的文章
STL 排序函数
查看>>
Microsoft Dynamics CRM 2011 面向Internet部署 (IFD) ADFS虚拟机环境搭建的步骤(CRM与ADFS装在同一台服务器上) 摘自网络...
查看>>
Setting up a Passive FTP Server in Windows Azure VM(ReplyCode: 227, Entering Passive Mode )
查看>>
Atitit mtp ptp rndis midi协议的不同区别
查看>>
Ajax辅助方法
查看>>
Python模块调用
查看>>
委托的调用
查看>>
c#中从string数组转换到int数组
查看>>
Scrapy入门程序点评
查看>>
DotNetty网络通信框架学习之源码分析
查看>>
8.1 Android Basic 数据存储 Preferences Structured(分组的Preferences)
查看>>
原因和证明
查看>>
再谈“我是怎么招聘程序员的”(下)
查看>>
VC6.0图像处理2--图像的反色
查看>>
Snoop, 对WPF程序有效的SPY++机制
查看>>
Does not contain a valid host;port authority解决方法
查看>>
JAVA程序猿怎么才干高速查找到学习资料?
查看>>
使用axel下载百度云文件
查看>>
Qt中图像的显示与基本操作
查看>>
详解软件工程之软件测试
查看>>