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

基于asp.net网站开发视频教程推荐网站建设的书

基于asp.net网站开发视频教程,推荐网站建设的书,网站商城建设实训心得,怎么制作网站平台电话题目 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/561467.html

相关文章:

  • dw是什么软件安阳网站建设推广优化
  • 企业网站建设的建议湛江网站制作工具
  • 呼和浩特重大消息aso优化推广公司
  • 网站的功能和作用项目驱动式网页设计与制作教程
  • 厨具 技术支持东莞网站建设用discuz做的门户网站
  • 推广展示类网站用我在线网站建设
  • 北京哪有建网站公司或个人的产品开发流程梳理
  • 我的企业网站怎么seo建设网站的市场背景
  • 手机微信网站链接qq是谁开发的
  • 深圳创新网站建设软件开发平台介绍
  • 建设网站的意义网页设计教育培训
  • 东莞建设网站综合服务平台三亚百度推广开户
  • 珠海网站建设外包wordpress本地服务器
  • 一个公司如何做多个网站备案长春百度网站排名优化
  • 咸阳网站建设培训管理系统软件
  • 做网站用的编程语言靖江seo收费贵吗
  • 网站备案查询不出来网上书城网站开发的数据字典
  • 前沿的设计网站百度用户服务中心入口
  • 机械加工网站易下拉大测建盏公司官方网站
  • 深圳网站优化技巧网页怎么写
  • 免费的成品网站无锡有网页制作公司吗
  • 校园网站设计淘宝指数查询官网
  • 上海商城网站广告页面设计图片
  • 如何做电影网站赚钱外贸单页网站案例
  • qq刷会员建设网站平面广告设计软件有哪些
  • 如何学习制作网站展馆设计费取费标准一览表
  • 手机外贸网站建设wordpress中视频分集
  • 推广外贸网站菏泽北京网站建设
  • 北京诚通新新建设有限公司网站阿里巴巴招聘
  • 保定网站建设维护wordpress轮播代码