当前位置: 首页 > wzjs >正文

在百度上建网站怎么建设花样云做网站怎样

在百度上建网站怎么建设,花样云做网站怎样,网络营销是网络销售吗,学ui设计好就业吗题目 P2661 [NOIP 2015 提高组] 信息传递 分析 首先根据示例1进行分析,可以得出以下信息传递的关系图: 我们可以发现,2、3、4之间存在一个环,这个环的长度是3,那么意味着在3轮信息传递之后游戏就会结束。 这么分析…

题目

P2661 [NOIP 2015 提高组] 信息传递
在这里插入图片描述

分析

首先根据示例1进行分析,可以得出以下信息传递的关系图:
请添加图片描述
我们可以发现,2、3、4之间存在一个环,这个环的长度是3,那么意味着在3轮信息传递之后游戏就会结束。
这么分析之后问题就变得简单了,我们只需要通过拓扑排序找到整个关系图中的环,然后dfs环中的某一个结点(拓朴排序后未被标记的结点),然后计算出环的长度,并且要找到最短的那个环长,这样就知道游戏能进行多少轮了。

代码

#include<iostream>
#include<queue>using namespace std;const int N = 2e5 + 10;int ne[N], in[N]; //ne存结点的后继,in存结点的入度 
//为什么本题不用vector存i的出边信息,因为本题中每个结点i只有一条出边,入边可以有多条 bool st[N];int cnt;void dfs(int u)
{cnt++;st[u] = true;int v = ne[u];if(!st[v]) dfs(v); //我准备特殊判断ne[x]不能为0的,但是输入格式保证ne[x]不会出现0 }int main()
{int n; cin >> n;for(int i=1;i<=n;i++) //记录关系 {cin >> ne[i];in[ne[i]]++;}//拓扑排序queue<int> q;//把所有入度为0的点加入队列 for(int i=1;i<=n;i++){if(in[i] == 0) {q.push(i);st[i] = true; //也可以不标记,初初始入度为0的点不会被其他点指向,所以它们不会在拓扑排序中被标记,但由于它们不在环中,后续DFS也不会处理它们}} while(q.size()){auto u = q.front(); q.pop();int v = ne[u]; //删掉入度为0的结点的边 in[v]--;if(in[v] == 0) {q.push(v);st[v] = true;}		} //最后遍历所有结点,如果有没入队的,就存在环,进行dfs求最短环长 int ret = n;for(int i=1;i<=n;i++){if(!st[i]) {cnt = 0;dfs(i);ret = min(ret,cnt);}} cout << ret << endl;return 0;} 
http://www.dtcms.com/wzjs/818523.html

相关文章:

  • 北京网站建设哪个好珠海市网站建设
  • 成都网站推广技巧微信公众号小程序怎么开发
  • 给女友惊喜做网站杭州响应式建站价格
  • 手机版网站开发网站建设实训室介绍
  • 门户网站介绍wordpress nginx固定链接
  • 新手建立网站的步骤自己做电影下载网站
  • 网站我优化有什么比较好的画册设计网站
  • 网站开发一般会使用框架吗网站建站目标
  • 如何申请网站com域名58同城网站官网
  • 还有河北城乡和住房建设厅网站吗网站服务器放置地
  • 网站站长如何赚钱山西seo推广方案
  • 网站建设情况哔哩哔哩视频推广
  • 做网站课程怎么把网站设置为主页面
  • 阿里云服务器怎么部署网站wordpress 拖动分类
  • 表白网站制作教程东莞最新消息 今天出入
  • 网站建设微信商城多少钱网页开发用什么软件
  • 法国企业网站建设上海电子商务网站制作
  • 红包打赏的网站怎么做深圳网站建设收费标准
  • 乐清市做淘宝网站公司宁波网络推广渠道有哪些
  • 互联网网站运营推广fview网站开发
  • 怎么在文档中做网站一点就开软件代理网
  • 好搜360网站wordpress怎么改搜索
  • 网站建设要买哪些软件做网站应该学什么语言
  • 公司网站案例展示百度站长工具官网
  • 安庆网站建设做网站属于无形资产还是费用
  • 潮州市建设工程交易中心网站中文域名注册官网入口
  • pc 移动 网站开发千万别学视觉传达设计
  • 手机网站建设图片网络推广计划书目录
  • 如何创建自己公司网站恒丰建设集团有限公司 网站
  • o2o网站建设新闻如何用云服务器做网站